[INFO] crate mgf 1.2.1 is already in cache [INFO] extracting crate mgf 1.2.1 into work/ex/clippy-test-run/sources/stable/reg/mgf/1.2.1 [INFO] extracting crate mgf 1.2.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/mgf/1.2.1 [INFO] validating manifest of mgf-1.2.1 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 mgf-1.2.1 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 mgf-1.2.1 [INFO] finished frobbing mgf-1.2.1 [INFO] frobbed toml for mgf-1.2.1 written to work/ex/clippy-test-run/sources/stable/reg/mgf/1.2.1/Cargo.toml [INFO] started frobbing mgf-1.2.1 [INFO] finished frobbing mgf-1.2.1 [INFO] frobbed toml for mgf-1.2.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/mgf/1.2.1/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 mgf-1.2.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/mgf/1.2.1:/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] d3bd353bfe1783af288ad313da61d5d70ef71bf3b696f4a37d27071d59a29291 [INFO] running `"docker" "start" "-a" "d3bd353bfe1783af288ad313da61d5d70ef71bf3b696f4a37d27071d59a29291"` [INFO] [stderr] Checking mgf v1.2.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/compound.rs:224:45 [INFO] [stderr] | [INFO] [stderr] 224 | Component::Capsule(Capsule{ r: r, a: p + -d, d: d * 2.0 }) [INFO] [stderr] | ^^^^ help: replace it with: `r` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:254:13 [INFO] [stderr] | [INFO] [stderr] 254 | let a = d.magnitude2(); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:255:13 [INFO] [stderr] | [INFO] [stderr] 255 | let b = m.dot(d); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:256:13 [INFO] [stderr] | [INFO] [stderr] 256 | let c = m.magnitude2() - s.r * s.r; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 8th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:264:13 [INFO] [stderr] | [INFO] [stderr] 264 | let t = ((-b - discr.sqrt()) / a).max(0.0); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:287:13 [INFO] [stderr] | [INFO] [stderr] 287 | let k = m.magnitude2() - cap.r * cap.r; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:289:18 [INFO] [stderr] | [INFO] [stderr] 289 | let (b, c) = if md < 0.0 { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:289:21 [INFO] [stderr] | [INFO] [stderr] 289 | let (b, c) = if md < 0.0 { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 8th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:305:17 [INFO] [stderr] | [INFO] [stderr] 305 | let t = ((-b - discr.sqrt()) / nn).max(0.0); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:314:13 [INFO] [stderr] | [INFO] [stderr] 314 | let c = dd * k - md * md; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:315:13 [INFO] [stderr] | [INFO] [stderr] 315 | let b = dd * mn - nd * md; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 8th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:320:13 [INFO] [stderr] | [INFO] [stderr] 320 | let t = (-b - discr.sqrt()) / a; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:568:17 [INFO] [stderr] | [INFO] [stderr] 568 | let q = Point3::from_vec(s.c.to_vec() + t * v - r * self.n); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/collision.rs:572:17 [INFO] [stderr] | [INFO] [stderr] 572 | t: t, [INFO] [stderr] | ^^^^ help: replace it with: `t` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:662:25 [INFO] [stderr] | [INFO] [stderr] 662 | let (a, b) = self.edge(edge_i); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:665:21 [INFO] [stderr] | [INFO] [stderr] 665 | let c = Capsule{ a: v1, d: v2 - v1, r: s.r }; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:709:17 [INFO] [stderr] | [INFO] [stderr] 709 | let t = a3 / (a3 - a4); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:729:21 [INFO] [stderr] | [INFO] [stderr] 729 | let q = c.a + c.d * t; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:837:29 [INFO] [stderr] | [INFO] [stderr] 837 | let (a, b) = self.edge(edge_i); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:876:29 [INFO] [stderr] | [INFO] [stderr] 876 | let (a, b) = self.edge(edge_i); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:899:25 [INFO] [stderr] | [INFO] [stderr] 899 | let t = contact.t; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:941:21 [INFO] [stderr] | [INFO] [stderr] 941 | let (a, b) = self.edge(edge_i); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:981:21 [INFO] [stderr] | [INFO] [stderr] 981 | let q = tri_p + c.d * c_t; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:988:21 [INFO] [stderr] | [INFO] [stderr] 988 | let d = inter.p - edge_a; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:1010:21 [INFO] [stderr] | [INFO] [stderr] 1010 | let (a, b) = self.edge(edge_i); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:1025:17 [INFO] [stderr] | [INFO] [stderr] 1025 | let s = Sphere { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:1037:25 [INFO] [stderr] | [INFO] [stderr] 1037 | let d = contact.a - edge_a; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:1055:33 [INFO] [stderr] | [INFO] [stderr] 1055 | let q: Point3 = Segment::from((edge_a, edge_b)) [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:1068:33 [INFO] [stderr] | [INFO] [stderr] 1068 | let q: Point3 = Segment::from((edge_a, edge_b)) [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:1128:17 [INFO] [stderr] | [INFO] [stderr] 1128 | let n = if len == 0.0 { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:1145:13 [INFO] [stderr] | [INFO] [stderr] 1145 | let l = v.magnitude2(); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:1158:21 [INFO] [stderr] | [INFO] [stderr] 1158 | let a = self.c + ba * self.r; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:1189:17 [INFO] [stderr] | [INFO] [stderr] 1189 | let n = if len == 0.0 { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:1206:13 [INFO] [stderr] | [INFO] [stderr] 1206 | let l = v.magnitude2(); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:1217:21 [INFO] [stderr] | [INFO] [stderr] 1217 | let b = s.c + v * intersect.t; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:1218:21 [INFO] [stderr] | [INFO] [stderr] 1218 | let a: Point3 = Segment::from(*self).closest_point(b); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 8th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:1220:21 [INFO] [stderr] | [INFO] [stderr] 1220 | let q = a + ba * self.r; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/geom.rs:49:13 [INFO] [stderr] | [INFO] [stderr] 49 | let n = (b - a).cross(c - a).normalize(); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/geom.rs:51:13 [INFO] [stderr] | [INFO] [stderr] 51 | n: n, [INFO] [stderr] | ^^^^ help: replace it with: `n` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/geom.rs:410:13 [INFO] [stderr] | [INFO] [stderr] 410 | let c = d1.dot(r); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/geom.rs:414:17 [INFO] [stderr] | [INFO] [stderr] 414 | let b = d1.dot(d2); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/geom.rs:416:17 [INFO] [stderr] | [INFO] [stderr] 416 | let s = if denom != 0.0 { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 8th binding whose name is just one char [INFO] [stderr] --> src/geom.rs:421:17 [INFO] [stderr] | [INFO] [stderr] 421 | let t = b * s + f; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/geom.rs:403:10 [INFO] [stderr] | [INFO] [stderr] 403 | let (s, t) = if a <= COLLISION_EPSILON { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/geom.rs:403:13 [INFO] [stderr] | [INFO] [stderr] 403 | let (s, t) = if a <= COLLISION_EPSILON { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/geom.rs:1098:13 [INFO] [stderr] | [INFO] [stderr] 1098 | let b = a + d; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/simplex.rs:326:13 [INFO] [stderr] | [INFO] [stderr] 326 | let w = vc * denom; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/simplex.rs:359:18 [INFO] [stderr] | [INFO] [stderr] 359 | let (p, new_state) = FACE_DATAPTRLOC.min_norm(&mut new_simp); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/simplex.rs:371:18 [INFO] [stderr] | [INFO] [stderr] 371 | let (p, new_state) = FACE_DATAPTRLOC.min_norm(&mut new_simp); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/simplex.rs:383:18 [INFO] [stderr] | [INFO] [stderr] 383 | let (p, new_state) = FACE_DATAPTRLOC.min_norm(&mut new_simp); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/simplex.rs:395:18 [INFO] [stderr] | [INFO] [stderr] 395 | let (p, new_state) = FACE_DATAPTRLOC.min_norm(&mut new_simp); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/simplex.rs:480:25 [INFO] [stderr] | [INFO] [stderr] 480 | let n = tri.normal(); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/simplex.rs:495:17 [INFO] [stderr] | [INFO] [stderr] 495 | let v = closest_n.dot(support.p.to_vec()) - closest_dist; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/simplex.rs:497:22 [INFO] [stderr] | [INFO] [stderr] 497 | let (u, v, w ) = closest_tri.0.barycentric(Point3::from_vec(closest_dist * closest_n)); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/simplex.rs:497:28 [INFO] [stderr] | [INFO] [stderr] 497 | let (u, v, w ) = closest_tri.0.barycentric(Point3::from_vec(closest_dist * closest_n)); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/simplex.rs:509:21 [INFO] [stderr] | [INFO] [stderr] 509 | let n = Triangle::from((a.p, b.p, c.p)).normal(); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/compound.rs:224:45 [INFO] [stderr] | [INFO] [stderr] 224 | Component::Capsule(Capsule{ r: r, a: p + -d, d: d * 2.0 }) [INFO] [stderr] | ^^^^ help: replace it with: `r` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:254:13 [INFO] [stderr] | [INFO] [stderr] 254 | let a = d.magnitude2(); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:255:13 [INFO] [stderr] | [INFO] [stderr] 255 | let b = m.dot(d); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:256:13 [INFO] [stderr] | [INFO] [stderr] 256 | let c = m.magnitude2() - s.r * s.r; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 8th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:264:13 [INFO] [stderr] | [INFO] [stderr] 264 | let t = ((-b - discr.sqrt()) / a).max(0.0); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:287:13 [INFO] [stderr] | [INFO] [stderr] 287 | let k = m.magnitude2() - cap.r * cap.r; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:289:18 [INFO] [stderr] | [INFO] [stderr] 289 | let (b, c) = if md < 0.0 { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:289:21 [INFO] [stderr] | [INFO] [stderr] 289 | let (b, c) = if md < 0.0 { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 8th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:305:17 [INFO] [stderr] | [INFO] [stderr] 305 | let t = ((-b - discr.sqrt()) / nn).max(0.0); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:314:13 [INFO] [stderr] | [INFO] [stderr] 314 | let c = dd * k - md * md; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:315:13 [INFO] [stderr] | [INFO] [stderr] 315 | let b = dd * mn - nd * md; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 8th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:320:13 [INFO] [stderr] | [INFO] [stderr] 320 | let t = (-b - discr.sqrt()) / a; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:568:17 [INFO] [stderr] | [INFO] [stderr] 568 | let q = Point3::from_vec(s.c.to_vec() + t * v - r * self.n); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/collision.rs:572:17 [INFO] [stderr] | [INFO] [stderr] 572 | t: t, [INFO] [stderr] | ^^^^ help: replace it with: `t` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:662:25 [INFO] [stderr] | [INFO] [stderr] 662 | let (a, b) = self.edge(edge_i); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:665:21 [INFO] [stderr] | [INFO] [stderr] 665 | let c = Capsule{ a: v1, d: v2 - v1, r: s.r }; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:709:17 [INFO] [stderr] | [INFO] [stderr] 709 | let t = a3 / (a3 - a4); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:729:21 [INFO] [stderr] | [INFO] [stderr] 729 | let q = c.a + c.d * t; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:837:29 [INFO] [stderr] | [INFO] [stderr] 837 | let (a, b) = self.edge(edge_i); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:876:29 [INFO] [stderr] | [INFO] [stderr] 876 | let (a, b) = self.edge(edge_i); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:899:25 [INFO] [stderr] | [INFO] [stderr] 899 | let t = contact.t; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:941:21 [INFO] [stderr] | [INFO] [stderr] 941 | let (a, b) = self.edge(edge_i); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:981:21 [INFO] [stderr] | [INFO] [stderr] 981 | let q = tri_p + c.d * c_t; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:988:21 [INFO] [stderr] | [INFO] [stderr] 988 | let d = inter.p - edge_a; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:1010:21 [INFO] [stderr] | [INFO] [stderr] 1010 | let (a, b) = self.edge(edge_i); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:1025:17 [INFO] [stderr] | [INFO] [stderr] 1025 | let s = Sphere { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:1037:25 [INFO] [stderr] | [INFO] [stderr] 1037 | let d = contact.a - edge_a; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:1055:33 [INFO] [stderr] | [INFO] [stderr] 1055 | let q: Point3 = Segment::from((edge_a, edge_b)) [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:1068:33 [INFO] [stderr] | [INFO] [stderr] 1068 | let q: Point3 = Segment::from((edge_a, edge_b)) [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:1128:17 [INFO] [stderr] | [INFO] [stderr] 1128 | let n = if len == 0.0 { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:1145:13 [INFO] [stderr] | [INFO] [stderr] 1145 | let l = v.magnitude2(); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:1158:21 [INFO] [stderr] | [INFO] [stderr] 1158 | let a = self.c + ba * self.r; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:1189:17 [INFO] [stderr] | [INFO] [stderr] 1189 | let n = if len == 0.0 { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:1206:13 [INFO] [stderr] | [INFO] [stderr] 1206 | let l = v.magnitude2(); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:1217:21 [INFO] [stderr] | [INFO] [stderr] 1217 | let b = s.c + v * intersect.t; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:1218:21 [INFO] [stderr] | [INFO] [stderr] 1218 | let a: Point3 = Segment::from(*self).closest_point(b); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 8th binding whose name is just one char [INFO] [stderr] --> src/collision.rs:1220:21 [INFO] [stderr] | [INFO] [stderr] 1220 | let q = a + ba * self.r; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/geom.rs:49:13 [INFO] [stderr] | [INFO] [stderr] 49 | let n = (b - a).cross(c - a).normalize(); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/geom.rs:51:13 [INFO] [stderr] | [INFO] [stderr] 51 | n: n, [INFO] [stderr] | ^^^^ help: replace it with: `n` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/geom.rs:410:13 [INFO] [stderr] | [INFO] [stderr] 410 | let c = d1.dot(r); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/geom.rs:414:17 [INFO] [stderr] | [INFO] [stderr] 414 | let b = d1.dot(d2); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/geom.rs:416:17 [INFO] [stderr] | [INFO] [stderr] 416 | let s = if denom != 0.0 { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 8th binding whose name is just one char [INFO] [stderr] --> src/geom.rs:421:17 [INFO] [stderr] | [INFO] [stderr] 421 | let t = b * s + f; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/geom.rs:403:10 [INFO] [stderr] | [INFO] [stderr] 403 | let (s, t) = if a <= COLLISION_EPSILON { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/geom.rs:403:13 [INFO] [stderr] | [INFO] [stderr] 403 | let (s, t) = if a <= COLLISION_EPSILON { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/geom.rs:1098:13 [INFO] [stderr] | [INFO] [stderr] 1098 | let b = a + d; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/simplex.rs:326:13 [INFO] [stderr] | [INFO] [stderr] 326 | let w = vc * denom; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/simplex.rs:359:18 [INFO] [stderr] | [INFO] [stderr] 359 | let (p, new_state) = FACE_DATAPTRLOC.min_norm(&mut new_simp); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/simplex.rs:371:18 [INFO] [stderr] | [INFO] [stderr] 371 | let (p, new_state) = FACE_DATAPTRLOC.min_norm(&mut new_simp); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/simplex.rs:383:18 [INFO] [stderr] | [INFO] [stderr] 383 | let (p, new_state) = FACE_DATAPTRLOC.min_norm(&mut new_simp); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/simplex.rs:395:18 [INFO] [stderr] | [INFO] [stderr] 395 | let (p, new_state) = FACE_DATAPTRLOC.min_norm(&mut new_simp); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/simplex.rs:480:25 [INFO] [stderr] | [INFO] [stderr] 480 | let n = tri.normal(); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/simplex.rs:495:17 [INFO] [stderr] | [INFO] [stderr] 495 | let v = closest_n.dot(support.p.to_vec()) - closest_dist; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/simplex.rs:497:22 [INFO] [stderr] | [INFO] [stderr] 497 | let (u, v, w ) = closest_tri.0.barycentric(Point3::from_vec(closest_dist * closest_n)); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/simplex.rs:497:28 [INFO] [stderr] | [INFO] [stderr] 497 | let (u, v, w ) = closest_tri.0.barycentric(Point3::from_vec(closest_dist * closest_n)); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/simplex.rs:509:21 [INFO] [stderr] | [INFO] [stderr] 509 | let n = Triangle::from((a.p, b.p, c.p)).normal(); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/collision.rs:1115:9 [INFO] [stderr] | [INFO] [stderr] 1115 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/collision.rs:763:28 [INFO] [stderr] | [INFO] [stderr] 763 | } else { [INFO] [stderr] | ____________________________^ [INFO] [stderr] 764 | | if c2.t == 0.0 { [INFO] [stderr] 765 | | let contains_1 = self.contains(&c1.a); [INFO] [stderr] 766 | | let contains_2 = self.contains(&c2.a); [INFO] [stderr] ... | [INFO] [stderr] 781 | | } [INFO] [stderr] 782 | | } [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] 763 | } else if c2.t == 0.0 { [INFO] [stderr] 764 | let contains_1 = self.contains(&c1.a); [INFO] [stderr] 765 | let contains_2 = self.contains(&c2.a); [INFO] [stderr] 766 | [INFO] [stderr] 767 | if contains_1 && contains_2 { [INFO] [stderr] 768 | callback(c2); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/collision.rs:1385:9 [INFO] [stderr] | [INFO] [stderr] 1385 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [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: long literal lacking separators [INFO] [stderr] --> src/geom.rs:25:36 [INFO] [stderr] | [INFO] [stderr] 25 | pub const COLLISION_EPSILON: f32 = 0.000001; [INFO] [stderr] | ^^^^^^^^ help: consider: `0.000_001` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/compound.rs:376:44 [INFO] [stderr] | [INFO] [stderr] 376 | assert_relative_eq!(contact.t, 0.6666663, epsilon = COLLISION_EPSILON); [INFO] [stderr] | ^^^^^^^^^ help: consider: `0.666_666_3` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/collision.rs:1115:9 [INFO] [stderr] | [INFO] [stderr] 1115 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/collision.rs:763:28 [INFO] [stderr] | [INFO] [stderr] 763 | } else { [INFO] [stderr] | ____________________________^ [INFO] [stderr] 764 | | if c2.t == 0.0 { [INFO] [stderr] 765 | | let contains_1 = self.contains(&c1.a); [INFO] [stderr] 766 | | let contains_2 = self.contains(&c2.a); [INFO] [stderr] ... | [INFO] [stderr] 781 | | } [INFO] [stderr] 782 | | } [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] 763 | } else if c2.t == 0.0 { [INFO] [stderr] 764 | let contains_1 = self.contains(&c1.a); [INFO] [stderr] 765 | let contains_2 = self.contains(&c2.a); [INFO] [stderr] 766 | [INFO] [stderr] 767 | if contains_1 && contains_2 { [INFO] [stderr] 768 | callback(c2); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/collision.rs:1385:9 [INFO] [stderr] | [INFO] [stderr] 1385 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [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: long literal lacking separators [INFO] [stderr] --> src/collision.rs:1652:62 [INFO] [stderr] | [INFO] [stderr] 1652 | assert_relative_eq!(intersection.p, Point3::new(-0.8660254037844386, 0.5, 0.0)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0.866_025_403_784_438_6` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/collision.rs:1653:49 [INFO] [stderr] | [INFO] [stderr] 1653 | assert_relative_eq!(intersection.t, 1.13397459621556196, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider: `1.133_974_596_215_561_96` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/collision.rs:1665:61 [INFO] [stderr] | [INFO] [stderr] 1665 | assert_relative_eq!(intersection.p, Point3::new(1.8660254037844386, 0.5, 0.0)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `1.866_025_403_784_438_6` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/collision.rs:1666:49 [INFO] [stderr] | [INFO] [stderr] 1666 | assert_relative_eq!(intersection.t, 1.13397459621556196, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider: `1.133_974_596_215_561_96` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/collision.rs:1873:39 [INFO] [stderr] | [INFO] [stderr] 1873 | assert_eq!(collision.b.y, 0.30000007); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0.300_000_07` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/collision.rs:2108:37 [INFO] [stderr] | [INFO] [stderr] 2108 | assert_eq!(collision.t, 0.81598306); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0.815_983_06` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/collision.rs:2134:37 [INFO] [stderr] | [INFO] [stderr] 2134 | assert_eq!(collision.t, 0.7022774); [INFO] [stderr] | ^^^^^^^^^ help: consider: `0.702_277_4` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/collision.rs:2282:48 [INFO] [stderr] | [INFO] [stderr] 2282 | assert_relative_eq!(contacts[0].t, 0.7639319); [INFO] [stderr] | ^^^^^^^^^ help: consider: `0.763_931_9` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/geom.rs:25:36 [INFO] [stderr] | [INFO] [stderr] 25 | pub const COLLISION_EPSILON: f32 = 0.000001; [INFO] [stderr] | ^^^^^^^^ help: consider: `0.000_001` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/bvh.rs:75:9 [INFO] [stderr] | [INFO] [stderr] 75 | / match self { [INFO] [stderr] 76 | | &BVHNodeType::Leaf(ref v) => BVHNodeType::Leaf(v.clone()), [INFO] [stderr] 77 | | &BVHNodeType::Parent(lc, rc) => BVHNodeType::Parent(lc, rc), [INFO] [stderr] 78 | | } [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] 75 | match *self { [INFO] [stderr] 76 | BVHNodeType::Leaf(ref v) => BVHNodeType::Leaf(v.clone()), [INFO] [stderr] 77 | BVHNodeType::Parent(lc, rc) => BVHNodeType::Parent(lc, rc), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `bvh::BVH` [INFO] [stderr] --> src/bvh.rs:84:5 [INFO] [stderr] | [INFO] [stderr] 84 | / pub fn new() -> Self { [INFO] [stderr] 85 | | BVH { [INFO] [stderr] 86 | | root: 0, [INFO] [stderr] 87 | | pool: Pool::new(), [INFO] [stderr] 88 | | } [INFO] [stderr] 89 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 82 | impl Default for bvh::BVH { [INFO] [stderr] 83 | fn default() -> Self { [INFO] [stderr] 84 | Self::new() [INFO] [stderr] 85 | } [INFO] [stderr] 86 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/bvh.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | / loop { [INFO] [stderr] 131 | | if let BVHNodeType::Parent(child1, child2) = self.pool[best].node_type { [INFO] [stderr] 132 | | let curr_bounds = self.pool[best].bounds; [INFO] [stderr] 133 | | let area = curr_bounds.surface_area(); [INFO] [stderr] ... | [INFO] [stderr] 165 | | } [INFO] [stderr] 166 | | } [INFO] [stderr] | |_________^ help: try: `while let BVHNodeType::Parent(child1, child2) = self.pool[best].node_type { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/bvh.rs:268:9 [INFO] [stderr] | [INFO] [stderr] 268 | / if let &BVHNodeType::Leaf(ref leaf) = &self.pool[i].node_type { [INFO] [stderr] 269 | | leaf [INFO] [stderr] 270 | | } else { [INFO] [stderr] 271 | | panic!("node at index {} is not a leaf", i); [INFO] [stderr] 272 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 268 | if let BVHNodeType::Leaf(ref leaf) = self.pool[i].node_type { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/compound.rs:43:9 [INFO] [stderr] | [INFO] [stderr] 43 | / match self { [INFO] [stderr] 44 | | &Component::Sphere(Sphere{ r, c }) => [INFO] [stderr] 45 | | (c, Quaternion::one(), ComponentConstructor::Sphere{ r }), [INFO] [stderr] 46 | | &Component::Capsule(Capsule{ r, a, d }) => { [INFO] [stderr] ... | [INFO] [stderr] 50 | | }, [INFO] [stderr] 51 | | } [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] 43 | match *self { [INFO] [stderr] 44 | Component::Sphere(Sphere{ r, c }) => [INFO] [stderr] 45 | (c, Quaternion::one(), ComponentConstructor::Sphere{ r }), [INFO] [stderr] 46 | Component::Capsule(Capsule{ r, a, d }) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/compound.rs:100:9 [INFO] [stderr] | [INFO] [stderr] 100 | / match self { [INFO] [stderr] 101 | | &mut Component::Sphere(ref mut s) => *s += v, [INFO] [stderr] 102 | | &mut Component::Capsule(ref mut c) => *c += v, [INFO] [stderr] 103 | | } [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] 100 | match *self { [INFO] [stderr] 101 | Component::Sphere(ref mut s) => *s += v, [INFO] [stderr] 102 | Component::Capsule(ref mut c) => *c += v, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/compound.rs:109:9 [INFO] [stderr] | [INFO] [stderr] 109 | / match self { [INFO] [stderr] 110 | | &mut Component::Sphere(ref mut s) => *s -= v, [INFO] [stderr] 111 | | &mut Component::Capsule(ref mut c) => *c -= v, [INFO] [stderr] 112 | | } [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] 109 | match *self { [INFO] [stderr] 110 | Component::Sphere(ref mut s) => *s -= v, [INFO] [stderr] 111 | Component::Capsule(ref mut c) => *c -= v, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/compound.rs:118:9 [INFO] [stderr] | [INFO] [stderr] 118 | / match self { [INFO] [stderr] 119 | | &Component::Sphere(s) => s.center(), [INFO] [stderr] 120 | | &Component::Capsule(c) => c.center(), [INFO] [stderr] 121 | | } [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] 118 | match *self { [INFO] [stderr] 119 | Component::Sphere(s) => s.center(), [INFO] [stderr] 120 | Component::Capsule(c) => c.center(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/compound.rs:125:9 [INFO] [stderr] | [INFO] [stderr] 125 | / match self { [INFO] [stderr] 126 | | &Component::Sphere(s) => s.closest_point(to), [INFO] [stderr] 127 | | &Component::Capsule(c) => c.closest_point(to), [INFO] [stderr] 128 | | } [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] 125 | match *self { [INFO] [stderr] 126 | Component::Sphere(s) => s.closest_point(to), [INFO] [stderr] 127 | Component::Capsule(c) => c.closest_point(to), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/compound.rs:134:9 [INFO] [stderr] | [INFO] [stderr] 134 | / match self { [INFO] [stderr] 135 | | &Component::Sphere(s) => s.bounds(), [INFO] [stderr] 136 | | &Component::Capsule(c) => c.bounds(), [INFO] [stderr] 137 | | } [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] 134 | match *self { [INFO] [stderr] 135 | Component::Sphere(s) => s.bounds(), [INFO] [stderr] 136 | Component::Capsule(c) => c.bounds(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/compound.rs:143:8 [INFO] [stderr] | [INFO] [stderr] 143 | / match self { [INFO] [stderr] 144 | | &Component::Sphere(s) => s.bounds(), [INFO] [stderr] 145 | | &Component::Capsule(c) => c.bounds(), [INFO] [stderr] 146 | | } [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] 143 | match *self { [INFO] [stderr] 144 | Component::Sphere(s) => s.bounds(), [INFO] [stderr] 145 | Component::Capsule(c) => c.bounds(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/compound.rs:152:9 [INFO] [stderr] | [INFO] [stderr] 152 | / match rhs { [INFO] [stderr] 153 | | &Component::Sphere(ref s) => self.intersection(s), [INFO] [stderr] 154 | | &Component::Capsule(ref c) => self.intersection(c), [INFO] [stderr] 155 | | } [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] 152 | match *rhs { [INFO] [stderr] 153 | Component::Sphere(ref s) => self.intersection(s), [INFO] [stderr] 154 | Component::Capsule(ref c) => self.intersection(c), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/compound.rs:220:9 [INFO] [stderr] | [INFO] [stderr] 220 | / match self { [INFO] [stderr] 221 | | &ComponentConstructor::Sphere{ r } => Component::Sphere(Sphere{ r, c: p }), [INFO] [stderr] 222 | | &ComponentConstructor::Capsule{ r, half_h } => { [INFO] [stderr] 223 | | let d = rot.rotate_vector(Vector3::new(0.0, 1.0, 0.0) * half_h); [INFO] [stderr] 224 | | Component::Capsule(Capsule{ r: r, a: p + -d, d: d * 2.0 }) [INFO] [stderr] 225 | | }, [INFO] [stderr] 226 | | } [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] 220 | match *self { [INFO] [stderr] 221 | ComponentConstructor::Sphere{ r } => Component::Sphere(Sphere{ r, c: p }), [INFO] [stderr] 222 | ComponentConstructor::Capsule{ r, half_h } => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 37 [INFO] [stderr] --> src/collision.rs:720:5 [INFO] [stderr] | [INFO] [stderr] 720 | / fn contacts(&self, capsule: &Moving, mut callback: F) -> bool { [INFO] [stderr] 721 | | let &Moving(c, v) = capsule; [INFO] [stderr] 722 | | let p: Plane = (*self).into(); [INFO] [stderr] 723 | | // Check if the capsule is already colliding. [INFO] [stderr] ... | [INFO] [stderr] 1115 | | return true; [INFO] [stderr] 1116 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:946:16 [INFO] [stderr] | [INFO] [stderr] 946 | if ab_cd.abs() != c.d.magnitude()*ab.magnitude() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(ab_cd.abs() - c.d.magnitude()*ab.magnitude()).abs() < error` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:946:16 [INFO] [stderr] | [INFO] [stderr] 946 | if ab_cd.abs() != c.d.magnitude()*ab.magnitude() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `solver::Solver` [INFO] [stderr] --> src/solver.rs:59:5 [INFO] [stderr] | [INFO] [stderr] 59 | / pub fn new() -> Self { [INFO] [stderr] 60 | | Solver { [INFO] [stderr] 61 | | constraints: SmallVec::new(), [INFO] [stderr] 62 | | } [INFO] [stderr] 63 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 53 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/geom.rs:945:13 [INFO] [stderr] | [INFO] [stderr] 945 | q = q + self.u[i] * clamp(dist, -self.e[i], self.e[i]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `q += self.u[i] * clamp(dist, -self.e[i], self.e[i])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `manifold::ContactPruner` [INFO] [stderr] --> src/manifold.rs:52:5 [INFO] [stderr] | [INFO] [stderr] 52 | / pub fn new() -> Self { [INFO] [stderr] 53 | | ContactPruner { [INFO] [stderr] 54 | | min_col_time: f32::INFINITY, [INFO] [stderr] 55 | | contacts: SmallVec::new(), [INFO] [stderr] 56 | | params: PhantomData, [INFO] [stderr] 57 | | } [INFO] [stderr] 58 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 42 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: item `manifold::Manifold` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/manifold.rs:151:1 [INFO] [stderr] | [INFO] [stderr] 151 | / impl Manifold { [INFO] [stderr] 152 | | pub fn new() -> Self { [INFO] [stderr] 153 | | Manifold { [INFO] [stderr] 154 | | time: 0.0, [INFO] [stderr] ... | [INFO] [stderr] 163 | | } [INFO] [stderr] 164 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `manifold::Manifold` [INFO] [stderr] --> src/manifold.rs:152:5 [INFO] [stderr] | [INFO] [stderr] 152 | / pub fn new() -> Self { [INFO] [stderr] 153 | | Manifold { [INFO] [stderr] 154 | | time: 0.0, [INFO] [stderr] 155 | | normal: Vector3::zero(), [INFO] [stderr] ... | [INFO] [stderr] 158 | | } [INFO] [stderr] 159 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 151 | impl Default for manifold::Manifold { [INFO] [stderr] 152 | fn default() -> Self { [INFO] [stderr] 153 | Self::new() [INFO] [stderr] 154 | } [INFO] [stderr] 155 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `mesh::Mesh` [INFO] [stderr] --> src/mesh.rs:37:5 [INFO] [stderr] | [INFO] [stderr] 37 | / pub fn new() -> Self { [INFO] [stderr] 38 | | Mesh { [INFO] [stderr] 39 | | x: Vector3::zero(), [INFO] [stderr] 40 | | verts: Vec::new(), [INFO] [stderr] ... | [INFO] [stderr] 43 | | } [INFO] [stderr] 44 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 36 | impl Default for mesh::Mesh { [INFO] [stderr] 37 | fn default() -> Self { [INFO] [stderr] 38 | Self::new() [INFO] [stderr] 39 | } [INFO] [stderr] 40 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `mesh::ConvexMesh` [INFO] [stderr] --> src/mesh.rs:147:5 [INFO] [stderr] | [INFO] [stderr] 147 | / pub fn new() -> Self { [INFO] [stderr] 148 | | ConvexMesh { [INFO] [stderr] 149 | | x: Vector3::zero(), [INFO] [stderr] 150 | | sum: Vector3::zero(), [INFO] [stderr] 151 | | verts: vec![], [INFO] [stderr] 152 | | } [INFO] [stderr] 153 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 146 | impl Default for mesh::ConvexMesh { [INFO] [stderr] 147 | fn default() -> Self { [INFO] [stderr] 148 | Self::new() [INFO] [stderr] 149 | } [INFO] [stderr] 150 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/physics.rs:66:9 [INFO] [stderr] | [INFO] [stderr] 66 | / match self { [INFO] [stderr] 67 | | &Component::Sphere(s) => s.tensor(m), [INFO] [stderr] 68 | | &Component::Capsule(c) => c.tensor(m), [INFO] [stderr] 69 | | } [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] 66 | match *self { [INFO] [stderr] 67 | Component::Sphere(s) => s.tensor(m), [INFO] [stderr] 68 | Component::Capsule(c) => c.tensor(m), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `physics::RigidBodyVec` [INFO] [stderr] --> src/physics.rs:132:5 [INFO] [stderr] | [INFO] [stderr] 132 | / pub fn new() -> Self { [INFO] [stderr] 133 | | RigidBodyVec { [INFO] [stderr] 134 | | x: Vec::new(), [INFO] [stderr] 135 | | q: Vec::new(), [INFO] [stderr] ... | [INFO] [stderr] 147 | | } [INFO] [stderr] 148 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 92 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: item `pool::Pool` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/pool.rs:39:1 [INFO] [stderr] | [INFO] [stderr] 39 | / impl Pool { [INFO] [stderr] 40 | | /// Create an empty Pool. [INFO] [stderr] 41 | | pub fn new() -> Self { [INFO] [stderr] 42 | | Pool { [INFO] [stderr] ... | [INFO] [stderr] 146 | | } [INFO] [stderr] 147 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `pool::Pool` [INFO] [stderr] --> src/pool.rs:41:5 [INFO] [stderr] | [INFO] [stderr] 41 | / pub fn new() -> Self { [INFO] [stderr] 42 | | Pool { [INFO] [stderr] 43 | | len: 0, [INFO] [stderr] 44 | | free_list: None, [INFO] [stderr] 45 | | entries: Vec::new(), [INFO] [stderr] 46 | | } [INFO] [stderr] 47 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 33 | #[derive(Default)] [INFO] [stderr] | [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/pool.rs:120:5 [INFO] [stderr] | [INFO] [stderr] 120 | / pub fn iter<'a>(&'a self) -> impl Iterator { [INFO] [stderr] 121 | | self.into_iter() [INFO] [stderr] 122 | | } [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/pool.rs:124:5 [INFO] [stderr] | [INFO] [stderr] 124 | / pub fn iter_mut<'a>(&'a mut self) -> impl Iterator { [INFO] [stderr] 125 | | self.into_iter() [INFO] [stderr] 126 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [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/pool.rs:130:5 [INFO] [stderr] | [INFO] [stderr] 130 | / pub fn get<'a>(&'a self, i: usize) -> Option<&'a T> { [INFO] [stderr] 131 | | if let Some(PoolEntry::Occupied(ref item)) = self.entries.get(i) { [INFO] [stderr] 132 | | Some(&item) [INFO] [stderr] 133 | | } else { [INFO] [stderr] 134 | | None [INFO] [stderr] 135 | | } [INFO] [stderr] 136 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [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/pool.rs:140:5 [INFO] [stderr] | [INFO] [stderr] 140 | / pub fn get_mut<'a>(&'a mut self, i: usize) -> Option<&'a mut T> { [INFO] [stderr] 141 | | if let Some(PoolEntry::Occupied(ref mut item)) = self.entries.get_mut(i) { [INFO] [stderr] 142 | | Some(item) [INFO] [stderr] 143 | | } else { [INFO] [stderr] 144 | | None [INFO] [stderr] 145 | | } [INFO] [stderr] 146 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/pool.rs:177:9 [INFO] [stderr] | [INFO] [stderr] 177 | / match self { [INFO] [stderr] 178 | | &FreeListEnd => FreeListEnd, [INFO] [stderr] 179 | | &FreeListPtr{ next_free } => FreeListPtr{ next_free }, [INFO] [stderr] 180 | | &Occupied(ref item) => Occupied(item.clone()), [INFO] [stderr] 181 | | } [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] 177 | match *self { [INFO] [stderr] 178 | FreeListEnd => FreeListEnd, [INFO] [stderr] 179 | FreeListPtr{ next_free } => FreeListPtr{ next_free }, [INFO] [stderr] 180 | Occupied(ref item) => Occupied(item.clone()), [INFO] [stderr] | [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/pool.rs:211:1 [INFO] [stderr] | [INFO] [stderr] 211 | / fn filter_pool<'a, T>((i, item): (usize, &'a PoolEntry)) -> Option<(usize, &'a T)> { [INFO] [stderr] 212 | | if let &PoolEntry::Occupied(ref item) = item { [INFO] [stderr] 213 | | Some((i, item)) [INFO] [stderr] 214 | | } else { [INFO] [stderr] 215 | | None [INFO] [stderr] 216 | | } [INFO] [stderr] 217 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/pool.rs:212:5 [INFO] [stderr] | [INFO] [stderr] 212 | / if let &PoolEntry::Occupied(ref item) = item { [INFO] [stderr] 213 | | Some((i, item)) [INFO] [stderr] 214 | | } else { [INFO] [stderr] 215 | | None [INFO] [stderr] 216 | | } [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] 212 | if let PoolEntry::Occupied(ref item) = *item { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/pool.rs:221:21 [INFO] [stderr] | [INFO] [stderr] 221 | type IntoIter = FilterMap>>, fn((usize, &PoolEntry)) -> Option<(usize, &T)>>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [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/pool.rs:228:1 [INFO] [stderr] | [INFO] [stderr] 228 | / fn filter_pool_mut<'a, T>((i, item): (usize, &'a mut PoolEntry)) -> Option<(usize, &'a mut T)> { [INFO] [stderr] 229 | | if let &mut PoolEntry::Occupied(ref mut item) = item { [INFO] [stderr] 230 | | Some((i, item)) [INFO] [stderr] 231 | | } else { [INFO] [stderr] 232 | | None [INFO] [stderr] 233 | | } [INFO] [stderr] 234 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/pool.rs:229:5 [INFO] [stderr] | [INFO] [stderr] 229 | / if let &mut PoolEntry::Occupied(ref mut item) = item { [INFO] [stderr] 230 | | Some((i, item)) [INFO] [stderr] 231 | | } else { [INFO] [stderr] 232 | | None [INFO] [stderr] 233 | | } [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] 229 | if let PoolEntry::Occupied(ref mut item) = *item { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/pool.rs:238:21 [INFO] [stderr] | [INFO] [stderr] 238 | type IntoIter = FilterMap>>, fn((usize, &mut PoolEntry)) -> Option<(usize, &mut T)>>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/simplex.rs:416:10 [INFO] [stderr] | [INFO] [stderr] 416 | map: HashMap<[ (u32, u32, u32); 2 ], [ (Point3, Point3); 2 ]>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: transmute from a `u32` to a `f32` [INFO] [stderr] --> src/simplex.rs:523:25 [INFO] [stderr] | [INFO] [stderr] 523 | mem::transmute::(*apx), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `f32::from_bits(*apx)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_int_to_float)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_int_to_float [INFO] [stderr] [INFO] [stderr] warning: transmute from a `u32` to a `f32` [INFO] [stderr] --> src/simplex.rs:524:25 [INFO] [stderr] | [INFO] [stderr] 524 | mem::transmute::(*apy), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `f32::from_bits(*apy)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_int_to_float [INFO] [stderr] [INFO] [stderr] warning: transmute from a `u32` to a `f32` [INFO] [stderr] --> src/simplex.rs:525:25 [INFO] [stderr] | [INFO] [stderr] 525 | mem::transmute::(*apz) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `f32::from_bits(*apz)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_int_to_float [INFO] [stderr] [INFO] [stderr] warning: transmute from a `u32` to a `f32` [INFO] [stderr] --> src/simplex.rs:530:25 [INFO] [stderr] | [INFO] [stderr] 530 | mem::transmute::(*bpx), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `f32::from_bits(*bpx)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_int_to_float [INFO] [stderr] [INFO] [stderr] warning: transmute from a `u32` to a `f32` [INFO] [stderr] --> src/simplex.rs:531:25 [INFO] [stderr] | [INFO] [stderr] 531 | mem::transmute::(*bpy), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `f32::from_bits(*bpy)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_int_to_float [INFO] [stderr] [INFO] [stderr] warning: transmute from a `u32` to a `f32` [INFO] [stderr] --> src/simplex.rs:532:25 [INFO] [stderr] | [INFO] [stderr] 532 | mem::transmute::(*bpz) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `f32::from_bits(*bpz)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_int_to_float [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `mgf`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/bvh.rs:75:9 [INFO] [stderr] | [INFO] [stderr] 75 | / match self { [INFO] [stderr] 76 | | &BVHNodeType::Leaf(ref v) => BVHNodeType::Leaf(v.clone()), [INFO] [stderr] 77 | | &BVHNodeType::Parent(lc, rc) => BVHNodeType::Parent(lc, rc), [INFO] [stderr] 78 | | } [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] 75 | match *self { [INFO] [stderr] 76 | BVHNodeType::Leaf(ref v) => BVHNodeType::Leaf(v.clone()), [INFO] [stderr] 77 | BVHNodeType::Parent(lc, rc) => BVHNodeType::Parent(lc, rc), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `bvh::BVH` [INFO] [stderr] --> src/bvh.rs:84:5 [INFO] [stderr] | [INFO] [stderr] 84 | / pub fn new() -> Self { [INFO] [stderr] 85 | | BVH { [INFO] [stderr] 86 | | root: 0, [INFO] [stderr] 87 | | pool: Pool::new(), [INFO] [stderr] 88 | | } [INFO] [stderr] 89 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 82 | impl Default for bvh::BVH { [INFO] [stderr] 83 | fn default() -> Self { [INFO] [stderr] 84 | Self::new() [INFO] [stderr] 85 | } [INFO] [stderr] 86 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/bvh.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | / loop { [INFO] [stderr] 131 | | if let BVHNodeType::Parent(child1, child2) = self.pool[best].node_type { [INFO] [stderr] 132 | | let curr_bounds = self.pool[best].bounds; [INFO] [stderr] 133 | | let area = curr_bounds.surface_area(); [INFO] [stderr] ... | [INFO] [stderr] 165 | | } [INFO] [stderr] 166 | | } [INFO] [stderr] | |_________^ help: try: `while let BVHNodeType::Parent(child1, child2) = self.pool[best].node_type { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/bvh.rs:268:9 [INFO] [stderr] | [INFO] [stderr] 268 | / if let &BVHNodeType::Leaf(ref leaf) = &self.pool[i].node_type { [INFO] [stderr] 269 | | leaf [INFO] [stderr] 270 | | } else { [INFO] [stderr] 271 | | panic!("node at index {} is not a leaf", i); [INFO] [stderr] 272 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 268 | if let BVHNodeType::Leaf(ref leaf) = self.pool[i].node_type { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/compound.rs:43:9 [INFO] [stderr] | [INFO] [stderr] 43 | / match self { [INFO] [stderr] 44 | | &Component::Sphere(Sphere{ r, c }) => [INFO] [stderr] 45 | | (c, Quaternion::one(), ComponentConstructor::Sphere{ r }), [INFO] [stderr] 46 | | &Component::Capsule(Capsule{ r, a, d }) => { [INFO] [stderr] ... | [INFO] [stderr] 50 | | }, [INFO] [stderr] 51 | | } [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] 43 | match *self { [INFO] [stderr] 44 | Component::Sphere(Sphere{ r, c }) => [INFO] [stderr] 45 | (c, Quaternion::one(), ComponentConstructor::Sphere{ r }), [INFO] [stderr] 46 | Component::Capsule(Capsule{ r, a, d }) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/compound.rs:100:9 [INFO] [stderr] | [INFO] [stderr] 100 | / match self { [INFO] [stderr] 101 | | &mut Component::Sphere(ref mut s) => *s += v, [INFO] [stderr] 102 | | &mut Component::Capsule(ref mut c) => *c += v, [INFO] [stderr] 103 | | } [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] 100 | match *self { [INFO] [stderr] 101 | Component::Sphere(ref mut s) => *s += v, [INFO] [stderr] 102 | Component::Capsule(ref mut c) => *c += v, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/compound.rs:109:9 [INFO] [stderr] | [INFO] [stderr] 109 | / match self { [INFO] [stderr] 110 | | &mut Component::Sphere(ref mut s) => *s -= v, [INFO] [stderr] 111 | | &mut Component::Capsule(ref mut c) => *c -= v, [INFO] [stderr] 112 | | } [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] 109 | match *self { [INFO] [stderr] 110 | Component::Sphere(ref mut s) => *s -= v, [INFO] [stderr] 111 | Component::Capsule(ref mut c) => *c -= v, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/compound.rs:118:9 [INFO] [stderr] | [INFO] [stderr] 118 | / match self { [INFO] [stderr] 119 | | &Component::Sphere(s) => s.center(), [INFO] [stderr] 120 | | &Component::Capsule(c) => c.center(), [INFO] [stderr] 121 | | } [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] 118 | match *self { [INFO] [stderr] 119 | Component::Sphere(s) => s.center(), [INFO] [stderr] 120 | Component::Capsule(c) => c.center(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/compound.rs:125:9 [INFO] [stderr] | [INFO] [stderr] 125 | / match self { [INFO] [stderr] 126 | | &Component::Sphere(s) => s.closest_point(to), [INFO] [stderr] 127 | | &Component::Capsule(c) => c.closest_point(to), [INFO] [stderr] 128 | | } [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] 125 | match *self { [INFO] [stderr] 126 | Component::Sphere(s) => s.closest_point(to), [INFO] [stderr] 127 | Component::Capsule(c) => c.closest_point(to), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/compound.rs:134:9 [INFO] [stderr] | [INFO] [stderr] 134 | / match self { [INFO] [stderr] 135 | | &Component::Sphere(s) => s.bounds(), [INFO] [stderr] 136 | | &Component::Capsule(c) => c.bounds(), [INFO] [stderr] 137 | | } [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] 134 | match *self { [INFO] [stderr] 135 | Component::Sphere(s) => s.bounds(), [INFO] [stderr] 136 | Component::Capsule(c) => c.bounds(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/compound.rs:143:8 [INFO] [stderr] | [INFO] [stderr] 143 | / match self { [INFO] [stderr] 144 | | &Component::Sphere(s) => s.bounds(), [INFO] [stderr] 145 | | &Component::Capsule(c) => c.bounds(), [INFO] [stderr] 146 | | } [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] 143 | match *self { [INFO] [stderr] 144 | Component::Sphere(s) => s.bounds(), [INFO] [stderr] 145 | Component::Capsule(c) => c.bounds(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/compound.rs:152:9 [INFO] [stderr] | [INFO] [stderr] 152 | / match rhs { [INFO] [stderr] 153 | | &Component::Sphere(ref s) => self.intersection(s), [INFO] [stderr] 154 | | &Component::Capsule(ref c) => self.intersection(c), [INFO] [stderr] 155 | | } [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] 152 | match *rhs { [INFO] [stderr] 153 | Component::Sphere(ref s) => self.intersection(s), [INFO] [stderr] 154 | Component::Capsule(ref c) => self.intersection(c), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/compound.rs:220:9 [INFO] [stderr] | [INFO] [stderr] 220 | / match self { [INFO] [stderr] 221 | | &ComponentConstructor::Sphere{ r } => Component::Sphere(Sphere{ r, c: p }), [INFO] [stderr] 222 | | &ComponentConstructor::Capsule{ r, half_h } => { [INFO] [stderr] 223 | | let d = rot.rotate_vector(Vector3::new(0.0, 1.0, 0.0) * half_h); [INFO] [stderr] 224 | | Component::Capsule(Capsule{ r: r, a: p + -d, d: d * 2.0 }) [INFO] [stderr] 225 | | }, [INFO] [stderr] 226 | | } [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] 220 | match *self { [INFO] [stderr] 221 | ComponentConstructor::Sphere{ r } => Component::Sphere(Sphere{ r, c: p }), [INFO] [stderr] 222 | ComponentConstructor::Capsule{ r, half_h } => { [INFO] [stderr] | [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/compound.rs:370:67 [INFO] [stderr] | [INFO] [stderr] 370 | assert!(!compound.contacts(&test_sphere, |c: Contact| { panic!("c = {:?}", c); })); [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: the function has a cyclomatic complexity of 37 [INFO] [stderr] --> src/collision.rs:720:5 [INFO] [stderr] | [INFO] [stderr] 720 | / fn contacts(&self, capsule: &Moving, mut callback: F) -> bool { [INFO] [stderr] 721 | | let &Moving(c, v) = capsule; [INFO] [stderr] 722 | | let p: Plane = (*self).into(); [INFO] [stderr] 723 | | // Check if the capsule is already colliding. [INFO] [stderr] ... | [INFO] [stderr] 1115 | | return true; [INFO] [stderr] 1116 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:946:16 [INFO] [stderr] | [INFO] [stderr] 946 | if ab_cd.abs() != c.d.magnitude()*ab.magnitude() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(ab_cd.abs() - c.d.magnitude()*ab.magnitude()).abs() < error` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:946:16 [INFO] [stderr] | [INFO] [stderr] 946 | if ab_cd.abs() != c.d.magnitude()*ab.magnitude() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:1614:13 [INFO] [stderr] | [INFO] [stderr] 1614 | assert_eq!(intersection.t, 2.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:1614:13 [INFO] [stderr] | [INFO] [stderr] 1614 | assert_eq!(intersection.t, 2.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:1626:13 [INFO] [stderr] | [INFO] [stderr] 1626 | assert_eq!(intersection.t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:1626:13 [INFO] [stderr] | [INFO] [stderr] 1626 | assert_eq!(intersection.t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:1638:13 [INFO] [stderr] | [INFO] [stderr] 1638 | assert_eq!(intersection.t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:1638:13 [INFO] [stderr] | [INFO] [stderr] 1638 | assert_eq!(intersection.t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: float has excessive precision [INFO] [stderr] --> src/collision.rs:1652:62 [INFO] [stderr] | [INFO] [stderr] 1652 | assert_relative_eq!(intersection.p, Point3::new(-0.8660254037844386, 0.5, 0.0)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider changing the type or truncating it to: `0.866_025_4` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::excessive_precision)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#excessive_precision [INFO] [stderr] [INFO] [stderr] warning: float has excessive precision [INFO] [stderr] --> src/collision.rs:1653:49 [INFO] [stderr] | [INFO] [stderr] 1653 | assert_relative_eq!(intersection.t, 1.13397459621556196, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider changing the type or truncating it to: `1.133_974_6` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#excessive_precision [INFO] [stderr] [INFO] [stderr] warning: float has excessive precision [INFO] [stderr] --> src/collision.rs:1665:61 [INFO] [stderr] | [INFO] [stderr] 1665 | assert_relative_eq!(intersection.p, Point3::new(1.8660254037844386, 0.5, 0.0)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider changing the type or truncating it to: `1.866_025_4` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#excessive_precision [INFO] [stderr] [INFO] [stderr] warning: float has excessive precision [INFO] [stderr] --> src/collision.rs:1666:49 [INFO] [stderr] | [INFO] [stderr] 1666 | assert_relative_eq!(intersection.t, 1.13397459621556196, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider changing the type or truncating it to: `1.133_974_6` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#excessive_precision [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:1723:13 [INFO] [stderr] | [INFO] [stderr] 1723 | assert_eq!(collision.t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:1723:13 [INFO] [stderr] | [INFO] [stderr] 1723 | assert_eq!(collision.t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [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/collision.rs:1743:73 [INFO] [stderr] | [INFO] [stderr] 1743 | assert!(floor.contacts(&sphere_collide_center, |c: Contact| { [INFO] [stderr] | _________________________________________________________________________^ [INFO] [stderr] 1744 | | assert_eq!(c.a, Point3::new(0.0, 1.0, 0.0)); [INFO] [stderr] 1745 | | assert_eq!(c.b, Point3::new(0.0, 1.0, 0.0)); [INFO] [stderr] 1746 | | assert_eq!(c.t, 1.0); [INFO] [stderr] 1747 | | assert_eq!(c.n, Vector3::new(0.0, 1.0, 0.0)); [INFO] [stderr] 1748 | | })); [INFO] [stderr] | |_____________^ [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] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:1746:17 [INFO] [stderr] | [INFO] [stderr] 1746 | assert_eq!(c.t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:1746:17 [INFO] [stderr] | [INFO] [stderr] 1746 | assert_eq!(c.t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [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/collision.rs:1749:73 [INFO] [stderr] | [INFO] [stderr] 1749 | assert!(sphere_collide_center.contacts(&floor, |c: Contact| { [INFO] [stderr] | _________________________________________________________________________^ [INFO] [stderr] 1750 | | assert_eq!(c.a, Point3::new(0.0, 1.0, 0.0)); [INFO] [stderr] 1751 | | assert_eq!(c.b, Point3::new(0.0, 1.0, 0.0)); [INFO] [stderr] 1752 | | assert_eq!(c.t, 1.0); [INFO] [stderr] 1753 | | assert_eq!(c.n, Vector3::new(0.0, -1.0, 0.0)); [INFO] [stderr] 1754 | | })); [INFO] [stderr] | |_____________^ [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] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:1752:17 [INFO] [stderr] | [INFO] [stderr] 1752 | assert_eq!(c.t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:1752:17 [INFO] [stderr] | [INFO] [stderr] 1752 | assert_eq!(c.t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [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/collision.rs:1762:76 [INFO] [stderr] | [INFO] [stderr] 1762 | assert!(floor.contacts(&sphere_collide_center_2s, |c: Contact| { [INFO] [stderr] | ____________________________________________________________________________^ [INFO] [stderr] 1763 | | assert_eq!(c.a, Point3::new(0.0, 1.0, 0.0)); [INFO] [stderr] 1764 | | assert_eq!(c.b, Point3::new(0.0, 1.0, 0.0)); [INFO] [stderr] 1765 | | assert_eq!(c.t, 0.5); [INFO] [stderr] 1766 | | assert_eq!(c.n, Vector3::new(0.0, 1.0, 0.0)); [INFO] [stderr] 1767 | | })); [INFO] [stderr] | |_____________^ [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] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:1765:17 [INFO] [stderr] | [INFO] [stderr] 1765 | assert_eq!(c.t, 0.5); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:1765:17 [INFO] [stderr] | [INFO] [stderr] 1765 | assert_eq!(c.t, 0.5); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [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/collision.rs:1775:73 [INFO] [stderr] | [INFO] [stderr] 1775 | assert!(floor.contacts(&sphere_collide_corner, |c: Contact| { [INFO] [stderr] | _________________________________________________________________________^ [INFO] [stderr] 1776 | | assert_eq!(c.a, Point3::new(0.0, 1.0, 3.0)); [INFO] [stderr] 1777 | | assert_eq!(c.b, Point3::new(0.0, 1.0, 3.0)); [INFO] [stderr] 1778 | | assert_eq!(c.t, 1.0); [INFO] [stderr] 1779 | | assert_eq!(c.n, Vector3::new(0.0, 1.0, 0.0)); [INFO] [stderr] 1780 | | })); [INFO] [stderr] | |_____________^ [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] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:1778:17 [INFO] [stderr] | [INFO] [stderr] 1778 | assert_eq!(c.t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:1778:17 [INFO] [stderr] | [INFO] [stderr] 1778 | assert_eq!(c.t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [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/collision.rs:1788:70 [INFO] [stderr] | [INFO] [stderr] 1788 | assert!(!floor.contacts(&sphere_miss_corner, |_:Contact| {})); [INFO] [stderr] | ^^ [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: 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/collision.rs:1805:73 [INFO] [stderr] | [INFO] [stderr] 1805 | assert!(floor.contacts(&sphere_collide_center, |c: Contact| { [INFO] [stderr] | _________________________________________________________________________^ [INFO] [stderr] 1806 | | assert_eq!(c.a, Point3::new(0.0, 1.0, 0.0)); [INFO] [stderr] 1807 | | assert_eq!(c.b, Point3::new(0.0, 1.0, 0.0)); [INFO] [stderr] 1808 | | assert_eq!(c.t, 1.0); [INFO] [stderr] 1809 | | assert_eq!(c.n, Vector3::new(0.0, 1.0, 0.0)); [INFO] [stderr] 1810 | | })); [INFO] [stderr] | |_____________^ [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] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:1808:17 [INFO] [stderr] | [INFO] [stderr] 1808 | assert_eq!(c.t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:1808:17 [INFO] [stderr] | [INFO] [stderr] 1808 | assert_eq!(c.t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [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/collision.rs:1818:73 [INFO] [stderr] | [INFO] [stderr] 1818 | assert!(floor.contacts(&sphere_collide_corner, |c: Contact| { [INFO] [stderr] | _________________________________________________________________________^ [INFO] [stderr] 1819 | | assert_relative_eq!(c.a, Point3::new(0.0, 1.0, 1.0), epsilon = geom::COLLISION_EPSILON); [INFO] [stderr] 1820 | | assert_relative_eq!(c.b, Point3::new(0.0, 1.0, 1.0), epsilon = geom::COLLISION_EPSILON); [INFO] [stderr] 1821 | | assert!((1.0 - c.t) < geom::COLLISION_EPSILON); [INFO] [stderr] 1822 | | assert_eq!(c.n, Vector3::new(0.0, 1.0, 0.0)); [INFO] [stderr] 1823 | | })); [INFO] [stderr] | |_____________^ [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: 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/collision.rs:1831:71 [INFO] [stderr] | [INFO] [stderr] 1831 | assert!(!floor.contacts(&sphere_miss_corner, |c: Contact| { panic!("C = {:?}", c); })); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [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: 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/collision.rs:1839:71 [INFO] [stderr] | [INFO] [stderr] 1839 | assert!(floor.contacts(&sphere_collide_edge, |c: Contact| { [INFO] [stderr] | _______________________________________________________________________^ [INFO] [stderr] 1840 | | assert_eq!(c.a, Point3::new(0.5, 1.0, 0.5)); [INFO] [stderr] 1841 | | assert_eq!(c.b, Point3::new(0.5, 1.0, 0.5)); [INFO] [stderr] 1842 | | assert_eq!(c.t, 1.0); [INFO] [stderr] 1843 | | assert_eq!(c.n, Vector3::new(0.0, 1.0, 0.0)); [INFO] [stderr] 1844 | | })); [INFO] [stderr] | |_____________^ [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] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:1842:17 [INFO] [stderr] | [INFO] [stderr] 1842 | assert_eq!(c.t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:1842:17 [INFO] [stderr] | [INFO] [stderr] 1842 | assert_eq!(c.t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:1858:13 [INFO] [stderr] | [INFO] [stderr] 1858 | assert_eq!(collision.a.y, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:1858:13 [INFO] [stderr] | [INFO] [stderr] 1858 | assert_eq!(collision.a.y, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:1859:13 [INFO] [stderr] | [INFO] [stderr] 1859 | assert_eq!(collision.b.y, -0.5); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:1859:13 [INFO] [stderr] | [INFO] [stderr] 1859 | assert_eq!(collision.b.y, -0.5); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:1861:13 [INFO] [stderr] | [INFO] [stderr] 1861 | assert_eq!(collision.b.y, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:1861:13 [INFO] [stderr] | [INFO] [stderr] 1861 | assert_eq!(collision.b.y, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:1862:13 [INFO] [stderr] | [INFO] [stderr] 1862 | assert_eq!(collision.a.y, -0.5); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:1862:13 [INFO] [stderr] | [INFO] [stderr] 1862 | assert_eq!(collision.a.y, -0.5); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:1872:13 [INFO] [stderr] | [INFO] [stderr] 1872 | assert_eq!(collision.a.y, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:1872:13 [INFO] [stderr] | [INFO] [stderr] 1872 | assert_eq!(collision.a.y, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:1873:13 [INFO] [stderr] | [INFO] [stderr] 1873 | assert_eq!(collision.b.y, 0.30000007); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:1873:13 [INFO] [stderr] | [INFO] [stderr] 1873 | assert_eq!(collision.b.y, 0.30000007); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:1898:13 [INFO] [stderr] | [INFO] [stderr] 1898 | assert_eq!(collision.t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:1898:13 [INFO] [stderr] | [INFO] [stderr] 1898 | assert_eq!(collision.t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:1902:13 [INFO] [stderr] | [INFO] [stderr] 1902 | assert_eq!(collision.t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:1902:13 [INFO] [stderr] | [INFO] [stderr] 1902 | assert_eq!(collision.t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:1923:13 [INFO] [stderr] | [INFO] [stderr] 1923 | assert_eq!(collision.t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:1923:13 [INFO] [stderr] | [INFO] [stderr] 1923 | assert_eq!(collision.t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:1942:13 [INFO] [stderr] | [INFO] [stderr] 1942 | assert_eq!(collision.t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:1942:13 [INFO] [stderr] | [INFO] [stderr] 1942 | assert_eq!(collision.t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:1959:13 [INFO] [stderr] | [INFO] [stderr] 1959 | assert_eq!(collision.t, 0.5); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:1959:13 [INFO] [stderr] | [INFO] [stderr] 1959 | assert_eq!(collision.t, 0.5); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:1976:13 [INFO] [stderr] | [INFO] [stderr] 1976 | assert_eq!(collision.t, 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:1976:13 [INFO] [stderr] | [INFO] [stderr] 1976 | assert_eq!(collision.t, 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:1991:13 [INFO] [stderr] | [INFO] [stderr] 1991 | assert_eq!(collision.t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:1991:13 [INFO] [stderr] | [INFO] [stderr] 1991 | assert_eq!(collision.t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:2008:13 [INFO] [stderr] | [INFO] [stderr] 2008 | assert_eq!(collision.t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:2008:13 [INFO] [stderr] | [INFO] [stderr] 2008 | assert_eq!(collision.t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:2030:13 [INFO] [stderr] | [INFO] [stderr] 2030 | assert_eq!(contacts[0].t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:2030:13 [INFO] [stderr] | [INFO] [stderr] 2030 | assert_eq!(contacts[0].t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 57 [INFO] [stderr] --> src/collision.rs:2037:9 [INFO] [stderr] | [INFO] [stderr] 2037 | / fn test_tri_collision() { [INFO] [stderr] 2038 | | let floor = Triangle { [INFO] [stderr] 2039 | | a: Vector3::new(1.0, 1.0, 0.0), [INFO] [stderr] 2040 | | c: Vector3::new(0.0, 1.0, 1.0), [INFO] [stderr] ... | [INFO] [stderr] 2298 | | contacts.clear(); [INFO] [stderr] 2299 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:2053:13 [INFO] [stderr] | [INFO] [stderr] 2053 | assert_eq!(contacts[0].t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:2053:13 [INFO] [stderr] | [INFO] [stderr] 2053 | assert_eq!(contacts[0].t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:2066:13 [INFO] [stderr] | [INFO] [stderr] 2066 | assert_eq!(contacts[0].t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:2066:13 [INFO] [stderr] | [INFO] [stderr] 2066 | assert_eq!(contacts[0].t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:2079:13 [INFO] [stderr] | [INFO] [stderr] 2079 | assert_eq!(contacts[0].t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:2079:13 [INFO] [stderr] | [INFO] [stderr] 2079 | assert_eq!(contacts[0].t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:2092:13 [INFO] [stderr] | [INFO] [stderr] 2092 | assert_eq!(contacts[0].t, 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:2092:13 [INFO] [stderr] | [INFO] [stderr] 2092 | assert_eq!(contacts[0].t, 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:2108:13 [INFO] [stderr] | [INFO] [stderr] 2108 | assert_eq!(collision.t, 0.81598306); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:2108:13 [INFO] [stderr] | [INFO] [stderr] 2108 | assert_eq!(collision.t, 0.81598306); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:2134:13 [INFO] [stderr] | [INFO] [stderr] 2134 | assert_eq!(collision.t, 0.7022774); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:2134:13 [INFO] [stderr] | [INFO] [stderr] 2134 | assert_eq!(collision.t, 0.7022774); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:2144:13 [INFO] [stderr] | [INFO] [stderr] 2144 | assert_eq!(contacts[0].t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:2144:13 [INFO] [stderr] | [INFO] [stderr] 2144 | assert_eq!(contacts[0].t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:2158:13 [INFO] [stderr] | [INFO] [stderr] 2158 | assert_eq!(contacts[0].t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:2158:13 [INFO] [stderr] | [INFO] [stderr] 2158 | assert_eq!(contacts[0].t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:2170:13 [INFO] [stderr] | [INFO] [stderr] 2170 | assert_eq!(contacts[0].t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:2170:13 [INFO] [stderr] | [INFO] [stderr] 2170 | assert_eq!(contacts[0].t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:2183:13 [INFO] [stderr] | [INFO] [stderr] 2183 | assert_eq!(contacts[0].t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:2183:13 [INFO] [stderr] | [INFO] [stderr] 2183 | assert_eq!(contacts[0].t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:2197:13 [INFO] [stderr] | [INFO] [stderr] 2197 | assert_eq!(contacts[0].t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:2197:13 [INFO] [stderr] | [INFO] [stderr] 2197 | assert_eq!(contacts[0].t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:2216:13 [INFO] [stderr] | [INFO] [stderr] 2216 | assert_eq!(contacts[0].t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:2216:13 [INFO] [stderr] | [INFO] [stderr] 2216 | assert_eq!(contacts[0].t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:2230:13 [INFO] [stderr] | [INFO] [stderr] 2230 | assert_eq!(contacts[0].t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:2230:13 [INFO] [stderr] | [INFO] [stderr] 2230 | assert_eq!(contacts[0].t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:2243:13 [INFO] [stderr] | [INFO] [stderr] 2243 | assert_eq!(contacts[0].t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:2243:13 [INFO] [stderr] | [INFO] [stderr] 2243 | assert_eq!(contacts[0].t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:2256:13 [INFO] [stderr] | [INFO] [stderr] 2256 | assert_eq!(contacts[0].t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:2256:13 [INFO] [stderr] | [INFO] [stderr] 2256 | assert_eq!(contacts[0].t, 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/collision.rs:2269:13 [INFO] [stderr] | [INFO] [stderr] 2269 | assert_eq!(contacts[0].t, 0.5); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/collision.rs:2269:13 [INFO] [stderr] | [INFO] [stderr] 2269 | assert_eq!(contacts[0].t, 0.5); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `solver::Solver` [INFO] [stderr] --> src/solver.rs:59:5 [INFO] [stderr] | [INFO] [stderr] 59 | / pub fn new() -> Self { [INFO] [stderr] 60 | | Solver { [INFO] [stderr] 61 | | constraints: SmallVec::new(), [INFO] [stderr] 62 | | } [INFO] [stderr] 63 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 53 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/geom.rs:945:13 [INFO] [stderr] | [INFO] [stderr] 945 | q = q + self.u[i] * clamp(dist, -self.e[i], self.e[i]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `q += self.u[i] * clamp(dist, -self.e[i], self.e[i])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `manifold::ContactPruner` [INFO] [stderr] --> src/manifold.rs:52:5 [INFO] [stderr] | [INFO] [stderr] 52 | / pub fn new() -> Self { [INFO] [stderr] 53 | | ContactPruner { [INFO] [stderr] 54 | | min_col_time: f32::INFINITY, [INFO] [stderr] 55 | | contacts: SmallVec::new(), [INFO] [stderr] 56 | | params: PhantomData, [INFO] [stderr] 57 | | } [INFO] [stderr] 58 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 42 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: item `manifold::Manifold` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/manifold.rs:151:1 [INFO] [stderr] | [INFO] [stderr] 151 | / impl Manifold { [INFO] [stderr] 152 | | pub fn new() -> Self { [INFO] [stderr] 153 | | Manifold { [INFO] [stderr] 154 | | time: 0.0, [INFO] [stderr] ... | [INFO] [stderr] 163 | | } [INFO] [stderr] 164 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `manifold::Manifold` [INFO] [stderr] --> src/manifold.rs:152:5 [INFO] [stderr] | [INFO] [stderr] 152 | / pub fn new() -> Self { [INFO] [stderr] 153 | | Manifold { [INFO] [stderr] 154 | | time: 0.0, [INFO] [stderr] 155 | | normal: Vector3::zero(), [INFO] [stderr] ... | [INFO] [stderr] 158 | | } [INFO] [stderr] 159 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 151 | impl Default for manifold::Manifold { [INFO] [stderr] 152 | fn default() -> Self { [INFO] [stderr] 153 | Self::new() [INFO] [stderr] 154 | } [INFO] [stderr] 155 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `mesh::Mesh` [INFO] [stderr] --> src/mesh.rs:37:5 [INFO] [stderr] | [INFO] [stderr] 37 | / pub fn new() -> Self { [INFO] [stderr] 38 | | Mesh { [INFO] [stderr] 39 | | x: Vector3::zero(), [INFO] [stderr] 40 | | verts: Vec::new(), [INFO] [stderr] ... | [INFO] [stderr] 43 | | } [INFO] [stderr] 44 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 36 | impl Default for mesh::Mesh { [INFO] [stderr] 37 | fn default() -> Self { [INFO] [stderr] 38 | Self::new() [INFO] [stderr] 39 | } [INFO] [stderr] 40 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `mesh::ConvexMesh` [INFO] [stderr] --> src/mesh.rs:147:5 [INFO] [stderr] | [INFO] [stderr] 147 | / pub fn new() -> Self { [INFO] [stderr] 148 | | ConvexMesh { [INFO] [stderr] 149 | | x: Vector3::zero(), [INFO] [stderr] 150 | | sum: Vector3::zero(), [INFO] [stderr] 151 | | verts: vec![], [INFO] [stderr] 152 | | } [INFO] [stderr] 153 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 146 | impl Default for mesh::ConvexMesh { [INFO] [stderr] 147 | fn default() -> Self { [INFO] [stderr] 148 | Self::new() [INFO] [stderr] 149 | } [INFO] [stderr] 150 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/physics.rs:66:9 [INFO] [stderr] | [INFO] [stderr] 66 | / match self { [INFO] [stderr] 67 | | &Component::Sphere(s) => s.tensor(m), [INFO] [stderr] 68 | | &Component::Capsule(c) => c.tensor(m), [INFO] [stderr] 69 | | } [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] 66 | match *self { [INFO] [stderr] 67 | Component::Sphere(s) => s.tensor(m), [INFO] [stderr] 68 | Component::Capsule(c) => c.tensor(m), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `physics::RigidBodyVec` [INFO] [stderr] --> src/physics.rs:132:5 [INFO] [stderr] | [INFO] [stderr] 132 | / pub fn new() -> Self { [INFO] [stderr] 133 | | RigidBodyVec { [INFO] [stderr] 134 | | x: Vec::new(), [INFO] [stderr] 135 | | q: Vec::new(), [INFO] [stderr] ... | [INFO] [stderr] 147 | | } [INFO] [stderr] 148 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 92 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: item `pool::Pool` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/pool.rs:39:1 [INFO] [stderr] | [INFO] [stderr] 39 | / impl Pool { [INFO] [stderr] 40 | | /// Create an empty Pool. [INFO] [stderr] 41 | | pub fn new() -> Self { [INFO] [stderr] 42 | | Pool { [INFO] [stderr] ... | [INFO] [stderr] 146 | | } [INFO] [stderr] 147 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `pool::Pool` [INFO] [stderr] --> src/pool.rs:41:5 [INFO] [stderr] | [INFO] [stderr] 41 | / pub fn new() -> Self { [INFO] [stderr] 42 | | Pool { [INFO] [stderr] 43 | | len: 0, [INFO] [stderr] 44 | | free_list: None, [INFO] [stderr] 45 | | entries: Vec::new(), [INFO] [stderr] 46 | | } [INFO] [stderr] 47 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 33 | #[derive(Default)] [INFO] [stderr] | [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/pool.rs:120:5 [INFO] [stderr] | [INFO] [stderr] 120 | / pub fn iter<'a>(&'a self) -> impl Iterator { [INFO] [stderr] 121 | | self.into_iter() [INFO] [stderr] 122 | | } [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/pool.rs:124:5 [INFO] [stderr] | [INFO] [stderr] 124 | / pub fn iter_mut<'a>(&'a mut self) -> impl Iterator { [INFO] [stderr] 125 | | self.into_iter() [INFO] [stderr] 126 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [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/pool.rs:130:5 [INFO] [stderr] | [INFO] [stderr] 130 | / pub fn get<'a>(&'a self, i: usize) -> Option<&'a T> { [INFO] [stderr] 131 | | if let Some(PoolEntry::Occupied(ref item)) = self.entries.get(i) { [INFO] [stderr] 132 | | Some(&item) [INFO] [stderr] 133 | | } else { [INFO] [stderr] 134 | | None [INFO] [stderr] 135 | | } [INFO] [stderr] 136 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [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/pool.rs:140:5 [INFO] [stderr] | [INFO] [stderr] 140 | / pub fn get_mut<'a>(&'a mut self, i: usize) -> Option<&'a mut T> { [INFO] [stderr] 141 | | if let Some(PoolEntry::Occupied(ref mut item)) = self.entries.get_mut(i) { [INFO] [stderr] 142 | | Some(item) [INFO] [stderr] 143 | | } else { [INFO] [stderr] 144 | | None [INFO] [stderr] 145 | | } [INFO] [stderr] 146 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/pool.rs:177:9 [INFO] [stderr] | [INFO] [stderr] 177 | / match self { [INFO] [stderr] 178 | | &FreeListEnd => FreeListEnd, [INFO] [stderr] 179 | | &FreeListPtr{ next_free } => FreeListPtr{ next_free }, [INFO] [stderr] 180 | | &Occupied(ref item) => Occupied(item.clone()), [INFO] [stderr] 181 | | } [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] 177 | match *self { [INFO] [stderr] 178 | FreeListEnd => FreeListEnd, [INFO] [stderr] 179 | FreeListPtr{ next_free } => FreeListPtr{ next_free }, [INFO] [stderr] 180 | Occupied(ref item) => Occupied(item.clone()), [INFO] [stderr] | [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/pool.rs:211:1 [INFO] [stderr] | [INFO] [stderr] 211 | / fn filter_pool<'a, T>((i, item): (usize, &'a PoolEntry)) -> Option<(usize, &'a T)> { [INFO] [stderr] 212 | | if let &PoolEntry::Occupied(ref item) = item { [INFO] [stderr] 213 | | Some((i, item)) [INFO] [stderr] 214 | | } else { [INFO] [stderr] 215 | | None [INFO] [stderr] 216 | | } [INFO] [stderr] 217 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/pool.rs:212:5 [INFO] [stderr] | [INFO] [stderr] 212 | / if let &PoolEntry::Occupied(ref item) = item { [INFO] [stderr] 213 | | Some((i, item)) [INFO] [stderr] 214 | | } else { [INFO] [stderr] 215 | | None [INFO] [stderr] 216 | | } [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] 212 | if let PoolEntry::Occupied(ref item) = *item { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/pool.rs:221:21 [INFO] [stderr] | [INFO] [stderr] 221 | type IntoIter = FilterMap>>, fn((usize, &PoolEntry)) -> Option<(usize, &T)>>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [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/pool.rs:228:1 [INFO] [stderr] | [INFO] [stderr] 228 | / fn filter_pool_mut<'a, T>((i, item): (usize, &'a mut PoolEntry)) -> Option<(usize, &'a mut T)> { [INFO] [stderr] 229 | | if let &mut PoolEntry::Occupied(ref mut item) = item { [INFO] [stderr] 230 | | Some((i, item)) [INFO] [stderr] 231 | | } else { [INFO] [stderr] 232 | | None [INFO] [stderr] 233 | | } [INFO] [stderr] 234 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/pool.rs:229:5 [INFO] [stderr] | [INFO] [stderr] 229 | / if let &mut PoolEntry::Occupied(ref mut item) = item { [INFO] [stderr] 230 | | Some((i, item)) [INFO] [stderr] 231 | | } else { [INFO] [stderr] 232 | | None [INFO] [stderr] 233 | | } [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] 229 | if let PoolEntry::Occupied(ref mut item) = *item { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/pool.rs:238:21 [INFO] [stderr] | [INFO] [stderr] 238 | type IntoIter = FilterMap>>, fn((usize, &mut PoolEntry)) -> Option<(usize, &mut T)>>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 33 [INFO] [stderr] --> src/pool.rs:272:9 [INFO] [stderr] | [INFO] [stderr] 272 | / fn test_pool() { [INFO] [stderr] 273 | | // Test inserting 8 items [INFO] [stderr] 274 | | { [INFO] [stderr] 275 | | let mut pool: Pool = Pool::new(); [INFO] [stderr] ... | [INFO] [stderr] 384 | | } [INFO] [stderr] 385 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/simplex.rs:416:10 [INFO] [stderr] | [INFO] [stderr] 416 | map: HashMap<[ (u32, u32, u32); 2 ], [ (Point3, Point3); 2 ]>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: transmute from a `u32` to a `f32` [INFO] [stderr] --> src/simplex.rs:523:25 [INFO] [stderr] | [INFO] [stderr] 523 | mem::transmute::(*apx), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `f32::from_bits(*apx)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_int_to_float)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_int_to_float [INFO] [stderr] [INFO] [stderr] warning: transmute from a `u32` to a `f32` [INFO] [stderr] --> src/simplex.rs:524:25 [INFO] [stderr] | [INFO] [stderr] 524 | mem::transmute::(*apy), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `f32::from_bits(*apy)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_int_to_float [INFO] [stderr] [INFO] [stderr] warning: transmute from a `u32` to a `f32` [INFO] [stderr] --> src/simplex.rs:525:25 [INFO] [stderr] | [INFO] [stderr] 525 | mem::transmute::(*apz) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `f32::from_bits(*apz)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_int_to_float [INFO] [stderr] [INFO] [stderr] warning: transmute from a `u32` to a `f32` [INFO] [stderr] --> src/simplex.rs:530:25 [INFO] [stderr] | [INFO] [stderr] 530 | mem::transmute::(*bpx), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `f32::from_bits(*bpx)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_int_to_float [INFO] [stderr] [INFO] [stderr] warning: transmute from a `u32` to a `f32` [INFO] [stderr] --> src/simplex.rs:531:25 [INFO] [stderr] | [INFO] [stderr] 531 | mem::transmute::(*bpy), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `f32::from_bits(*bpy)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_int_to_float [INFO] [stderr] [INFO] [stderr] warning: transmute from a `u32` to a `f32` [INFO] [stderr] --> src/simplex.rs:532:25 [INFO] [stderr] | [INFO] [stderr] 532 | mem::transmute::(*bpz) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `f32::from_bits(*bpz)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_int_to_float [INFO] [stderr] [INFO] [stderr] error: aborting due to 42 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `mgf`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "d3bd353bfe1783af288ad313da61d5d70ef71bf3b696f4a37d27071d59a29291"` [INFO] running `"docker" "rm" "-f" "d3bd353bfe1783af288ad313da61d5d70ef71bf3b696f4a37d27071d59a29291"` [INFO] [stdout] d3bd353bfe1783af288ad313da61d5d70ef71bf3b696f4a37d27071d59a29291