[INFO] crate aabb-quadtree 0.1.0 is already in cache [INFO] extracting crate aabb-quadtree 0.1.0 into work/ex/clippy-test-run/sources/stable/reg/aabb-quadtree/0.1.0 [INFO] extracting crate aabb-quadtree 0.1.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/aabb-quadtree/0.1.0 [INFO] validating manifest of aabb-quadtree-0.1.0 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 aabb-quadtree-0.1.0 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 aabb-quadtree-0.1.0 [INFO] finished frobbing aabb-quadtree-0.1.0 [INFO] frobbed toml for aabb-quadtree-0.1.0 written to work/ex/clippy-test-run/sources/stable/reg/aabb-quadtree/0.1.0/Cargo.toml [INFO] started frobbing aabb-quadtree-0.1.0 [INFO] finished frobbing aabb-quadtree-0.1.0 [INFO] frobbed toml for aabb-quadtree-0.1.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/aabb-quadtree/0.1.0/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [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 aabb-quadtree-0.1.0 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-5/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/reg/aabb-quadtree/0.1.0:/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] 1327c98aa5009d91c2234f63223c46dd9d41e8dfc94697aecdc326edd477a7a6 [INFO] running `"docker" "start" "-a" "1327c98aa5009d91c2234f63223c46dd9d41e8dfc94697aecdc326edd477a7a6"` [INFO] [stderr] Checking aabb-quadtree v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:89:21 [INFO] [stderr] | [INFO] [stderr] 89 | children: children, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `children` [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/lib.rs:124:17 [INFO] [stderr] | [INFO] [stderr] 124 | allow_duplicates: allow_duplicates, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `allow_duplicates` [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/lib.rs:125:17 [INFO] [stderr] | [INFO] [stderr] 125 | max_children: max_children, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `max_children` [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/lib.rs:126:17 [INFO] [stderr] | [INFO] [stderr] 126 | min_children: min_children, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `min_children` [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/lib.rs:127:17 [INFO] [stderr] | [INFO] [stderr] 127 | max_depth: max_depth, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `max_depth` [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/lib.rs:248:13 [INFO] [stderr] | [INFO] [stderr] 248 | aabb: aabb, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `aabb` [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/lib.rs:250:13 [INFO] [stderr] | [INFO] [stderr] 250 | depth: depth, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `depth` [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/lib.rs:409:17 [INFO] [stderr] | [INFO] [stderr] 409 | aabb: aabb, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `aabb` [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/lib.rs:410:17 [INFO] [stderr] | [INFO] [stderr] 410 | elements: elements, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `elements` [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/lib.rs:411:17 [INFO] [stderr] | [INFO] [stderr] 411 | depth: depth, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `depth` [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/lib.rs:89:21 [INFO] [stderr] | [INFO] [stderr] 89 | children: children, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `children` [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/lib.rs:124:17 [INFO] [stderr] | [INFO] [stderr] 124 | allow_duplicates: allow_duplicates, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `allow_duplicates` [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/lib.rs:125:17 [INFO] [stderr] | [INFO] [stderr] 125 | max_children: max_children, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `max_children` [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/lib.rs:126:17 [INFO] [stderr] | [INFO] [stderr] 126 | min_children: min_children, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `min_children` [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/lib.rs:127:17 [INFO] [stderr] | [INFO] [stderr] 127 | max_depth: max_depth, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `max_depth` [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/lib.rs:248:13 [INFO] [stderr] | [INFO] [stderr] 248 | aabb: aabb, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `aabb` [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/lib.rs:250:13 [INFO] [stderr] | [INFO] [stderr] 250 | depth: depth, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `depth` [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/lib.rs:409:17 [INFO] [stderr] | [INFO] [stderr] 409 | aabb: aabb, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `aabb` [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/lib.rs:410:17 [INFO] [stderr] | [INFO] [stderr] 410 | elements: elements, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `elements` [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/lib.rs:411:17 [INFO] [stderr] | [INFO] [stderr] 411 | depth: depth, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `depth` [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: unneeded return statement [INFO] [stderr] --> src/geom.rs:199:13 [INFO] [stderr] | [INFO] [stderr] 199 | return b; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `b` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/geom.rs:206:13 [INFO] [stderr] | [INFO] [stderr] 206 | return b; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `b` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/lib.rs:294:25 [INFO] [stderr] | [INFO] [stderr] 294 | / if aabb.does_intersect(&item_aabb) { [INFO] [stderr] 295 | | if child.insert(item_id, item_aabb, config) { [INFO] [stderr] 296 | | *element_count += 1; [INFO] [stderr] 297 | | did_insert = true; [INFO] [stderr] 298 | | } [INFO] [stderr] 299 | | } [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] 294 | if aabb.does_intersect(&item_aabb) && child.insert(item_id, item_aabb, config) { [INFO] [stderr] 295 | *element_count += 1; [INFO] [stderr] 296 | did_insert = true; [INFO] [stderr] 297 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/lib.rs:332:24 [INFO] [stderr] | [INFO] [stderr] 332 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 333 | | if config.allow_duplicates || [INFO] [stderr] 334 | | !elements [INFO] [stderr] 335 | | .iter() [INFO] [stderr] ... | [INFO] [stderr] 340 | | } [INFO] [stderr] 341 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [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] 332 | } else if config.allow_duplicates || [INFO] [stderr] 333 | !elements [INFO] [stderr] 334 | .iter() [INFO] [stderr] 335 | .any(|&(_, ref e_bb)| e_bb.close_to(&item_aabb, config.epsilon)) [INFO] [stderr] 336 | { [INFO] [stderr] 337 | elements.push((item_id, item_aabb)); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/geom.rs:199:13 [INFO] [stderr] | [INFO] [stderr] 199 | return b; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `b` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/geom.rs:206:13 [INFO] [stderr] | [INFO] [stderr] 206 | return b; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `b` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/lib.rs:294:25 [INFO] [stderr] | [INFO] [stderr] 294 | / if aabb.does_intersect(&item_aabb) { [INFO] [stderr] 295 | | if child.insert(item_id, item_aabb, config) { [INFO] [stderr] 296 | | *element_count += 1; [INFO] [stderr] 297 | | did_insert = true; [INFO] [stderr] 298 | | } [INFO] [stderr] 299 | | } [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] 294 | if aabb.does_intersect(&item_aabb) && child.insert(item_id, item_aabb, config) { [INFO] [stderr] 295 | *element_count += 1; [INFO] [stderr] 296 | did_insert = true; [INFO] [stderr] 297 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/lib.rs:332:24 [INFO] [stderr] | [INFO] [stderr] 332 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 333 | | if config.allow_duplicates || [INFO] [stderr] 334 | | !elements [INFO] [stderr] 335 | | .iter() [INFO] [stderr] ... | [INFO] [stderr] 340 | | } [INFO] [stderr] 341 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [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] 332 | } else if config.allow_duplicates || [INFO] [stderr] 333 | !elements [INFO] [stderr] 334 | .iter() [INFO] [stderr] 335 | .any(|&(_, ref e_bb)| e_bb.close_to(&item_aabb, config.epsilon)) [INFO] [stderr] 336 | { [INFO] [stderr] 337 | elements.push((item_id, item_aabb)); [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/geom.rs:81:37 [INFO] [stderr] | [INFO] [stderr] 81 | pub fn centered_with_radius(p1: &Point, radius: f32) -> Rect { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Point` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:86:28 [INFO] [stderr] | [INFO] [stderr] 86 | pub fn from_points(p1: &Point, p2: &Point) -> Rect { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Point` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:86:40 [INFO] [stderr] | [INFO] [stderr] 86 | pub fn from_points(p1: &Point, p2: &Point) -> Rect { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Point` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:92:39 [INFO] [stderr] | [INFO] [stderr] 92 | pub fn from_point_and_size(point: &Point, size: &Vector) -> Rect { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Point` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:92:53 [INFO] [stderr] | [INFO] [stderr] 92 | pub fn from_point_and_size(point: &Point, size: &Vector) -> Rect { [INFO] [stderr] | ^^^^^^^ help: consider passing by value instead: `Vector` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:109:27 [INFO] [stderr] | [INFO] [stderr] 109 | pub fn null_at(point: &Point) -> Rect { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Point` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:184:38 [INFO] [stderr] | [INFO] [stderr] 184 | pub fn expanded_by(&self, point: &Point) -> Rect { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Point` [INFO] [stderr] | [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/geom.rs:185:21 [INFO] [stderr] | [INFO] [stderr] 185 | let mut r = self.clone(); [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:194:48 [INFO] [stderr] | [INFO] [stderr] 194 | pub fn expand_to_include(&mut self, point: &Point) { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Point` [INFO] [stderr] | [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/geom.rs:217:21 [INFO] [stderr] | [INFO] [stderr] 217 | let mut r = self.clone(); [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:223:31 [INFO] [stderr] | [INFO] [stderr] 223 | pub fn contains(&self, p: &Point) -> bool { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Point` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:320:22 [INFO] [stderr] | [INFO] [stderr] 320 | pub fn magnitude(&self) -> f32 { (self.x * self.x + self.y * self.y).sqrt() } [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:322:23 [INFO] [stderr] | [INFO] [stderr] 322 | pub fn normalized(&self) -> Vector { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:81:37 [INFO] [stderr] | [INFO] [stderr] 81 | pub fn centered_with_radius(p1: &Point, radius: f32) -> Rect { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Point` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:86:28 [INFO] [stderr] | [INFO] [stderr] 86 | pub fn from_points(p1: &Point, p2: &Point) -> Rect { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Point` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:86:40 [INFO] [stderr] | [INFO] [stderr] 86 | pub fn from_points(p1: &Point, p2: &Point) -> Rect { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Point` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:92:39 [INFO] [stderr] | [INFO] [stderr] 92 | pub fn from_point_and_size(point: &Point, size: &Vector) -> Rect { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Point` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:92:53 [INFO] [stderr] | [INFO] [stderr] 92 | pub fn from_point_and_size(point: &Point, size: &Vector) -> Rect { [INFO] [stderr] | ^^^^^^^ help: consider passing by value instead: `Vector` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:109:27 [INFO] [stderr] | [INFO] [stderr] 109 | pub fn null_at(point: &Point) -> Rect { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Point` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:184:38 [INFO] [stderr] | [INFO] [stderr] 184 | pub fn expanded_by(&self, point: &Point) -> Rect { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Point` [INFO] [stderr] | [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/geom.rs:185:21 [INFO] [stderr] | [INFO] [stderr] 185 | let mut r = self.clone(); [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:194:48 [INFO] [stderr] | [INFO] [stderr] 194 | pub fn expand_to_include(&mut self, point: &Point) { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:327:18 [INFO] [stderr] | [INFO] [stderr] 327 | pub fn mul_e(&self, other: &Vector) -> Vector { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [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] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:327:32 [INFO] [stderr] | [INFO] [stderr] 327 | pub fn mul_e(&self, other: &Vector) -> Vector { [INFO] [stderr] | ^^^^^^^ help: consider passing by value instead: `Vector` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:334:20 [INFO] [stderr] | [INFO] [stderr] 334 | pub fn scale_e(&self, sx: f32, sy: f32) -> Vector { Vector { x: self.x * sx, y: self.y * sy } } [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:336:18 [INFO] [stderr] | [INFO] [stderr] 336 | pub fn cross(&self, other: &Vector) -> f32 { self.x * other.y - self.y * other.x } [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:336:32 [INFO] [stderr] | [INFO] [stderr] 336 | pub fn cross(&self, other: &Vector) -> f32 { self.x * other.y - self.y * other.x } [INFO] [stderr] | ^^^^^^^ help: consider passing by value instead: `Vector` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:338:16 [INFO] [stderr] | [INFO] [stderr] 338 | pub fn dot(&self, other: &Vector) -> f32 { self.x * other.x + self.y * other.y } [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [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: using `clone` on a `Copy` type [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:338:30 [INFO] [stderr] | [INFO] [stderr] 338 | pub fn dot(&self, other: &Vector) -> f32 { self.x * other.x + self.y * other.y } [INFO] [stderr] | ^^^^^^^ help: consider passing by value instead: `Vector` [INFO] [stderr] | [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] --> src/geom.rs:217:21 [INFO] [stderr] | [INFO] [stderr] 217 | let mut r = self.clone(); [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:342:21 [INFO] [stderr] | [INFO] [stderr] 342 | pub fn close_to(&self, other: &Point, epsilon: f32) -> bool { self.distance_2(other) < epsilon * epsilon } [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:342:35 [INFO] [stderr] | [INFO] [stderr] 342 | pub fn close_to(&self, other: &Point, epsilon: f32) -> bool { self.distance_2(other) < epsilon * epsilon } [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Point` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:223:31 [INFO] [stderr] | [INFO] [stderr] 223 | pub fn contains(&self, p: &Point) -> bool { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Point` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:344:21 [INFO] [stderr] | [INFO] [stderr] 344 | pub fn distance(&self, other: &Point) -> f32 { self.distance_2(other).sqrt() } [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:344:35 [INFO] [stderr] | [INFO] [stderr] 344 | pub fn distance(&self, other: &Point) -> f32 { self.distance_2(other).sqrt() } [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Point` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:346:23 [INFO] [stderr] | [INFO] [stderr] 346 | pub fn distance_2(&self, other: &Point) -> f32 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:346:37 [INFO] [stderr] | [INFO] [stderr] 346 | pub fn distance_2(&self, other: &Point) -> f32 { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Point` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:320:22 [INFO] [stderr] | [INFO] [stderr] 320 | pub fn magnitude(&self) -> f32 { (self.x * self.x + self.y * self.y).sqrt() } [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:322:23 [INFO] [stderr] | [INFO] [stderr] 322 | pub fn normalized(&self) -> Vector { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:327:18 [INFO] [stderr] | [INFO] [stderr] 327 | pub fn mul_e(&self, other: &Vector) -> Vector { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:327:32 [INFO] [stderr] | [INFO] [stderr] 327 | pub fn mul_e(&self, other: &Vector) -> Vector { [INFO] [stderr] | ^^^^^^^ help: consider passing by value instead: `Vector` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:334:20 [INFO] [stderr] | [INFO] [stderr] 334 | pub fn scale_e(&self, sx: f32, sy: f32) -> Vector { Vector { x: self.x * sx, y: self.y * sy } } [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:336:18 [INFO] [stderr] | [INFO] [stderr] 336 | pub fn cross(&self, other: &Vector) -> f32 { self.x * other.y - self.y * other.x } [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:336:32 [INFO] [stderr] | [INFO] [stderr] 336 | pub fn cross(&self, other: &Vector) -> f32 { self.x * other.y - self.y * other.x } [INFO] [stderr] | ^^^^^^^ help: consider passing by value instead: `Vector` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:338:16 [INFO] [stderr] | [INFO] [stderr] 338 | pub fn dot(&self, other: &Vector) -> f32 { self.x * other.x + self.y * other.y } [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:338:30 [INFO] [stderr] | [INFO] [stderr] 338 | pub fn dot(&self, other: &Vector) -> f32 { self.x * other.x + self.y * other.y } [INFO] [stderr] | ^^^^^^^ help: consider passing by value instead: `Vector` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:342:21 [INFO] [stderr] | [INFO] [stderr] 342 | pub fn close_to(&self, other: &Point, epsilon: f32) -> bool { self.distance_2(other) < epsilon * epsilon } [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:342:35 [INFO] [stderr] | [INFO] [stderr] 342 | pub fn close_to(&self, other: &Point, epsilon: f32) -> bool { self.distance_2(other) < epsilon * epsilon } [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Point` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:344:21 [INFO] [stderr] | [INFO] [stderr] 344 | pub fn distance(&self, other: &Point) -> f32 { self.distance_2(other).sqrt() } [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:344:35 [INFO] [stderr] | [INFO] [stderr] 344 | pub fn distance(&self, other: &Point) -> f32 { self.distance_2(other).sqrt() } [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Point` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:346:23 [INFO] [stderr] | [INFO] [stderr] 346 | pub fn distance_2(&self, other: &Point) -> f32 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/geom.rs:346:37 [INFO] [stderr] | [INFO] [stderr] 346 | pub fn distance_2(&self, other: &Point) -> f32 { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Point` [INFO] [stderr] | [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:73:9 [INFO] [stderr] | [INFO] [stderr] 73 | / match self { [INFO] [stderr] 74 | | &QuadNode::Branch { [INFO] [stderr] 75 | | ref aabb, [INFO] [stderr] 76 | | ref children, [INFO] [stderr] ... | [INFO] [stderr] 103 | | }, [INFO] [stderr] 104 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 73 | match *self { [INFO] [stderr] 74 | QuadNode::Branch { [INFO] [stderr] 75 | ref aabb, [INFO] [stderr] 76 | ref children, [INFO] [stderr] 77 | ref in_all, [INFO] [stderr] 78 | ref element_count, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:88:27 [INFO] [stderr] | [INFO] [stderr] 88 | aabb: aabb.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*aabb` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:91:36 [INFO] [stderr] | [INFO] [stderr] 91 | element_count: element_count.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*element_count` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:92:28 [INFO] [stderr] | [INFO] [stderr] 92 | depth: depth.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^ help: try dereferencing it: `*depth` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:100:23 [INFO] [stderr] | [INFO] [stderr] 100 | aabb: aabb.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*aabb` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:102:24 [INFO] [stderr] | [INFO] [stderr] 102 | depth: depth.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^ help: try dereferencing it: `*depth` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:73:9 [INFO] [stderr] | [INFO] [stderr] 73 | / match self { [INFO] [stderr] 74 | | &QuadNode::Branch { [INFO] [stderr] 75 | | ref aabb, [INFO] [stderr] 76 | | ref children, [INFO] [stderr] ... | [INFO] [stderr] 103 | | }, [INFO] [stderr] 104 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 73 | match *self { [INFO] [stderr] 74 | QuadNode::Branch { [INFO] [stderr] 75 | ref aabb, [INFO] [stderr] 76 | ref children, [INFO] [stderr] 77 | ref in_all, [INFO] [stderr] 78 | ref element_count, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:88:27 [INFO] [stderr] | [INFO] [stderr] 88 | aabb: aabb.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*aabb` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:91:36 [INFO] [stderr] | [INFO] [stderr] 91 | element_count: element_count.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*element_count` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:92:28 [INFO] [stderr] | [INFO] [stderr] 92 | depth: depth.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^ help: try dereferencing it: `*depth` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:100:23 [INFO] [stderr] | [INFO] [stderr] 100 | aabb: aabb.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*aabb` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:102:24 [INFO] [stderr] | [INFO] [stderr] 102 | depth: depth.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^ help: try dereferencing it: `*depth` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:240:9 [INFO] [stderr] | [INFO] [stderr] 240 | / match self { [INFO] [stderr] 241 | | &QuadNode::Branch { ref aabb, .. } => aabb.clone(), [INFO] [stderr] 242 | | &QuadNode::Leaf { ref aabb, .. } => aabb.clone(), [INFO] [stderr] 243 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 240 | match *self { [INFO] [stderr] 241 | QuadNode::Branch { ref aabb, .. } => aabb.clone(), [INFO] [stderr] 242 | QuadNode::Leaf { ref aabb, .. } => aabb.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:241:51 [INFO] [stderr] | [INFO] [stderr] 241 | &QuadNode::Branch { ref aabb, .. } => aabb.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*aabb` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:240:9 [INFO] [stderr] | [INFO] [stderr] 240 | / match self { [INFO] [stderr] 241 | | &QuadNode::Branch { ref aabb, .. } => aabb.clone(), [INFO] [stderr] 242 | | &QuadNode::Leaf { ref aabb, .. } => aabb.clone(), [INFO] [stderr] 243 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 240 | match *self { [INFO] [stderr] 241 | QuadNode::Branch { ref aabb, .. } => aabb.clone(), [INFO] [stderr] 242 | QuadNode::Leaf { ref aabb, .. } => aabb.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:241:51 [INFO] [stderr] | [INFO] [stderr] 241 | &QuadNode::Branch { ref aabb, .. } => aabb.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*aabb` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:242:49 [INFO] [stderr] | [INFO] [stderr] 242 | &QuadNode::Leaf { ref aabb, .. } => aabb.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*aabb` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:255:9 [INFO] [stderr] | [INFO] [stderr] 255 | / match self { [INFO] [stderr] 256 | | &QuadNode::Branch { [INFO] [stderr] 257 | | depth, [INFO] [stderr] 258 | | ref aabb, [INFO] [stderr] ... | [INFO] [stderr] 269 | | } [INFO] [stderr] 270 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 255 | match *self { [INFO] [stderr] 256 | QuadNode::Branch { [INFO] [stderr] 257 | depth, [INFO] [stderr] 258 | ref aabb, [INFO] [stderr] 259 | ref children, [INFO] [stderr] 260 | .. [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:242:49 [INFO] [stderr] | [INFO] [stderr] 242 | &QuadNode::Leaf { ref aabb, .. } => aabb.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*aabb` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:255:9 [INFO] [stderr] | [INFO] [stderr] 255 | / match self { [INFO] [stderr] 256 | | &QuadNode::Branch { [INFO] [stderr] 257 | | depth, [INFO] [stderr] 258 | | ref aabb, [INFO] [stderr] ... | [INFO] [stderr] 269 | | } [INFO] [stderr] 270 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 255 | match *self { [INFO] [stderr] 256 | QuadNode::Branch { [INFO] [stderr] 257 | depth, [INFO] [stderr] 258 | ref aabb, [INFO] [stderr] 259 | ref children, [INFO] [stderr] 260 | .. [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:276:9 [INFO] [stderr] | [INFO] [stderr] 276 | / match self { [INFO] [stderr] 277 | | &mut QuadNode::Branch { [INFO] [stderr] 278 | | ref aabb, [INFO] [stderr] 279 | | ref mut in_all, [INFO] [stderr] ... | [INFO] [stderr] 342 | | } [INFO] [stderr] 343 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 276 | match *self { [INFO] [stderr] 277 | QuadNode::Branch { [INFO] [stderr] 278 | ref aabb, [INFO] [stderr] 279 | ref mut in_all, [INFO] [stderr] 280 | ref mut children, [INFO] [stderr] 281 | ref mut element_count, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:276:9 [INFO] [stderr] | [INFO] [stderr] 276 | / match self { [INFO] [stderr] 277 | | &mut QuadNode::Branch { [INFO] [stderr] 278 | | ref aabb, [INFO] [stderr] 279 | | ref mut in_all, [INFO] [stderr] ... | [INFO] [stderr] 342 | | } [INFO] [stderr] 343 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 276 | match *self { [INFO] [stderr] 277 | QuadNode::Branch { [INFO] [stderr] 278 | ref aabb, [INFO] [stderr] 279 | ref mut in_all, [INFO] [stderr] 280 | ref mut children, [INFO] [stderr] 281 | ref mut element_count, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:370:23 [INFO] [stderr] | [INFO] [stderr] 370 | let removed = match self { [INFO] [stderr] | _______________________^ [INFO] [stderr] 371 | | &mut QuadNode::Branch { [INFO] [stderr] 372 | | ref depth, [INFO] [stderr] 373 | | ref aabb, [INFO] [stderr] ... | [INFO] [stderr] 400 | | &mut QuadNode::Leaf { ref mut elements, .. } => remove_from(elements, item_id), [INFO] [stderr] 401 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 370 | let removed = match *self { [INFO] [stderr] 371 | QuadNode::Branch { [INFO] [stderr] 372 | ref depth, [INFO] [stderr] 373 | ref aabb, [INFO] [stderr] 374 | ref mut in_all, [INFO] [stderr] 375 | ref mut children, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/lib.rs:379:17 [INFO] [stderr] | [INFO] [stderr] 379 | / let mut did_remove = false; [INFO] [stderr] 380 | | [INFO] [stderr] 381 | | if item_aabb.contains(&aabb.midpoint()) { [INFO] [stderr] 382 | | did_remove = remove_from(in_all, item_id); [INFO] [stderr] ... | [INFO] [stderr] 388 | | } [INFO] [stderr] 389 | | } [INFO] [stderr] | |_________________^ help: it is more idiomatic to write: `let did_remove = if item_aabb.contains(&aabb.midpoint()) { remove_from(in_all, item_id) } else { ..; false };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [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/lib.rs:418:32 [INFO] [stderr] | [INFO] [stderr] 418 | fn match_all(elements: &Vec<(ItemId, Rect)>, query_aabb: Rect, out: &mut Vec<(ItemId, Rect)>) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(ItemId, Rect)]` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:426:9 [INFO] [stderr] | [INFO] [stderr] 426 | / match self { [INFO] [stderr] 427 | | &QuadNode::Branch { ref in_all, ref children, .. } => { [INFO] [stderr] 428 | | match_all(in_all, query_aabb, out); [INFO] [stderr] 429 | | [INFO] [stderr] ... | [INFO] [stderr] 436 | | &QuadNode::Leaf { ref elements, .. } => match_all(elements, query_aabb, out), [INFO] [stderr] 437 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 426 | match *self { [INFO] [stderr] 427 | QuadNode::Branch { ref in_all, ref children, .. } => { [INFO] [stderr] 428 | match_all(in_all, query_aabb, out); [INFO] [stderr] 429 | [INFO] [stderr] 430 | for &(ref child_aabb, ref child_tree) in children { [INFO] [stderr] 431 | if query_aabb.does_intersect(&child_aabb) { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:370:23 [INFO] [stderr] | [INFO] [stderr] 370 | let removed = match self { [INFO] [stderr] | _______________________^ [INFO] [stderr] 371 | | &mut QuadNode::Branch { [INFO] [stderr] 372 | | ref depth, [INFO] [stderr] 373 | | ref aabb, [INFO] [stderr] ... | [INFO] [stderr] 400 | | &mut QuadNode::Leaf { ref mut elements, .. } => remove_from(elements, item_id), [INFO] [stderr] 401 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 370 | let removed = match *self { [INFO] [stderr] 371 | QuadNode::Branch { [INFO] [stderr] 372 | ref depth, [INFO] [stderr] 373 | ref aabb, [INFO] [stderr] 374 | ref mut in_all, [INFO] [stderr] 375 | ref mut children, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/lib.rs:379:17 [INFO] [stderr] | [INFO] [stderr] 379 | / let mut did_remove = false; [INFO] [stderr] 380 | | [INFO] [stderr] 381 | | if item_aabb.contains(&aabb.midpoint()) { [INFO] [stderr] 382 | | did_remove = remove_from(in_all, item_id); [INFO] [stderr] ... | [INFO] [stderr] 388 | | } [INFO] [stderr] 389 | | } [INFO] [stderr] | |_________________^ help: it is more idiomatic to write: `let did_remove = if item_aabb.contains(&aabb.midpoint()) { remove_from(in_all, item_id) } else { ..; false };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [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/lib.rs:418:32 [INFO] [stderr] | [INFO] [stderr] 418 | fn match_all(elements: &Vec<(ItemId, Rect)>, query_aabb: Rect, out: &mut Vec<(ItemId, Rect)>) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(ItemId, Rect)]` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:426:9 [INFO] [stderr] | [INFO] [stderr] 426 | / match self { [INFO] [stderr] 427 | | &QuadNode::Branch { ref in_all, ref children, .. } => { [INFO] [stderr] 428 | | match_all(in_all, query_aabb, out); [INFO] [stderr] 429 | | [INFO] [stderr] ... | [INFO] [stderr] 436 | | &QuadNode::Leaf { ref elements, .. } => match_all(elements, query_aabb, out), [INFO] [stderr] 437 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 426 | match *self { [INFO] [stderr] 427 | QuadNode::Branch { ref in_all, ref children, .. } => { [INFO] [stderr] 428 | match_all(in_all, query_aabb, out); [INFO] [stderr] 429 | [INFO] [stderr] 430 | for &(ref child_aabb, ref child_tree) in children { [INFO] [stderr] 431 | if query_aabb.does_intersect(&child_aabb) { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 0.66s [INFO] running `"docker" "inspect" "1327c98aa5009d91c2234f63223c46dd9d41e8dfc94697aecdc326edd477a7a6"` [INFO] running `"docker" "rm" "-f" "1327c98aa5009d91c2234f63223c46dd9d41e8dfc94697aecdc326edd477a7a6"` [INFO] [stdout] 1327c98aa5009d91c2234f63223c46dd9d41e8dfc94697aecdc326edd477a7a6