[INFO] updating cached repository wagnerf42/grouille [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/wagnerf42/grouille [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/wagnerf42/grouille" "work/ex/clippy-test-run/sources/stable/gh/wagnerf42/grouille"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/wagnerf42/grouille'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/wagnerf42/grouille" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/wagnerf42/grouille"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/wagnerf42/grouille'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 8c10e69527a65b6edbfc85d6c9ca837b82aae59c [INFO] sha for GitHub repo wagnerf42/grouille: 8c10e69527a65b6edbfc85d6c9ca837b82aae59c [INFO] validating manifest of wagnerf42/grouille 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 wagnerf42/grouille 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 wagnerf42/grouille [INFO] finished frobbing wagnerf42/grouille [INFO] frobbed toml for wagnerf42/grouille written to work/ex/clippy-test-run/sources/stable/gh/wagnerf42/grouille/Cargo.toml [INFO] started frobbing wagnerf42/grouille [INFO] finished frobbing wagnerf42/grouille [INFO] frobbed toml for wagnerf42/grouille written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/wagnerf42/grouille/Cargo.toml [INFO] crate wagnerf42/grouille has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting wagnerf42/grouille against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-6/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/wagnerf42/grouille:/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] 9995f6a508674ba513dc0e292a8ed996ce3881ea7435b1b16317ecad87d3dbfd [INFO] running `"docker" "start" "-a" "9995f6a508674ba513dc0e292a8ed996ce3881ea7435b1b16317ecad87d3dbfd"` [INFO] [stderr] Compiling serde v1.0.66 [INFO] [stderr] Compiling num-integer v0.1.38 [INFO] [stderr] Checking rand_core v0.2.0 [INFO] [stderr] Checking thread-scoped v1.0.2 [INFO] [stderr] Checking cast v0.2.2 [INFO] [stderr] Checking streaming-iterator v0.1.4 [INFO] [stderr] Checking memchr v2.0.1 [INFO] [stderr] Checking time v0.1.40 [INFO] [stderr] Checking log v0.4.2 [INFO] [stderr] Checking aho-corasick v0.6.4 [INFO] [stderr] Checking criterion-plot v0.2.3 [INFO] [stderr] Compiling pest_derive v1.0.7 [INFO] [stderr] Checking num-traits v0.1.43 [INFO] [stderr] Checking criterion-stats v0.2.3 [INFO] [stderr] Compiling syn v0.14.2 [INFO] [stderr] Checking rand v0.5.0 [INFO] [stderr] Checking itertools-num v0.1.1 [INFO] [stderr] Checking failure v0.1.1 [INFO] [stderr] Checking chrono v0.4.2 [INFO] [stderr] Checking regex v0.2.11 [INFO] [stderr] Checking grouille v0.1.0 (/opt/crater/workdir) [INFO] [stderr] Checking simplelog v0.5.2 [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/tycat.rs:294:5 [INFO] [stderr] | [INFO] [stderr] 294 | / write!( [INFO] [stderr] 295 | | svg_file, [INFO] [stderr] 296 | | "width=\"{}\" height=\"{}\" fill=\"white\"/>\n", [INFO] [stderr] 297 | | width, height [INFO] [stderr] 298 | | )?; [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/tycat.rs:305:5 [INFO] [stderr] | [INFO] [stderr] 305 | write!(svg_file, "\n")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/tycat.rs:306:5 [INFO] [stderr] | [INFO] [stderr] 306 | / write!( [INFO] [stderr] 307 | | svg_file, [INFO] [stderr] 308 | | "\n", [INFO] [stderr] 309 | | 2.0 * stroke [INFO] [stderr] 310 | | )?; [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/tycat.rs:311:5 [INFO] [stderr] | [INFO] [stderr] 311 | / write!( [INFO] [stderr] 312 | | svg_file, [INFO] [stderr] 313 | | //"\n", // this removes segments orientation [INFO] [stderr] 314 | | "\ [INFO] [stderr] ... | [INFO] [stderr] 319 | | 3.0 * stroke, [INFO] [stderr] 320 | | )?; [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/tycat.rs:321:5 [INFO] [stderr] | [INFO] [stderr] 321 | write!(svg_file, "\n")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/tycat.rs:322:5 [INFO] [stderr] | [INFO] [stderr] 322 | / write!( [INFO] [stderr] 323 | | svg_file, [INFO] [stderr] 324 | | "\n", [INFO] [stderr] 325 | | stroke [INFO] [stderr] 326 | | )?; [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/polygon/mod.rs:147:41 [INFO] [stderr] | [INFO] [stderr] 147 | if area(points).abs() < 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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/arc.rs:62:9 [INFO] [stderr] | [INFO] [stderr] 62 | centers [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/arc.rs:61:23 [INFO] [stderr] | [INFO] [stderr] 61 | let centers = line_circle_intersections(&line, &self.start, self.radius).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `quadrant::Quadrant` [INFO] [stderr] --> src/quadrant.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | / pub fn new() -> Self { [INFO] [stderr] 19 | | Quadrant { [INFO] [stderr] 20 | | mins: [INFINITY; 2], [INFO] [stderr] 21 | | maxs: [NEG_INFINITY; 2], [INFO] [stderr] 22 | | } [INFO] [stderr] 23 | | } [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] 9 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: defining a method called `add` on this type; consider implementing the `std::ops::Add` trait or choosing a less ambiguous name [INFO] [stderr] --> src/quadrant.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | / pub fn add(self, point: &Point) -> Self { [INFO] [stderr] 27 | | Quadrant { [INFO] [stderr] 28 | | mins: [min(self.mins[0], point.x), min(self.mins[1], point.y)], [INFO] [stderr] 29 | | maxs: [max(self.maxs[0], point.x), max(self.maxs[1], point.y)], [INFO] [stderr] 30 | | } [INFO] [stderr] 31 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] error: you are implementing `Hash` explicitly but have derived `PartialEq` [INFO] [stderr] --> src/hashes.rs:19:1 [INFO] [stderr] | [INFO] [stderr] 19 | / impl Hash for HashKey { [INFO] [stderr] 20 | | fn hash(&self, state: &mut H) { [INFO] [stderr] 21 | | raw_double_bits(&self.0).hash(state); [INFO] [stderr] 22 | | } [INFO] [stderr] 23 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::derive_hash_xor_eq)] on by default [INFO] [stderr] note: `PartialEq` implemented here [INFO] [stderr] --> src/hashes.rs:13:10 [INFO] [stderr] | [INFO] [stderr] 13 | #[derive(PartialEq, PartialOrd, Copy, Clone)] [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_hash_xor_eq [INFO] [stderr] [INFO] [stderr] error: you are implementing `Hash` explicitly but have derived `PartialEq` [INFO] [stderr] --> src/hashes.rs:31:1 [INFO] [stderr] | [INFO] [stderr] 31 | / impl Hash for Point { [INFO] [stderr] 32 | | fn hash(&self, state: &mut H) { [INFO] [stderr] 33 | | raw_double_bits(&self.x).hash(state); [INFO] [stderr] 34 | | raw_double_bits(&self.y).hash(state); [INFO] [stderr] 35 | | } [INFO] [stderr] 36 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] note: `PartialEq` implemented here [INFO] [stderr] --> src/point.rs:5:42 [INFO] [stderr] | [INFO] [stderr] 5 | #[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_hash_xor_eq [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/hashes.rs:54:23 [INFO] [stderr] | [INFO] [stderr] 54 | fn raw_double_bits(f: &f64) -> u64 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f64` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/stl/facet.rs:67:9 [INFO] [stderr] | [INFO] [stderr] 67 | self.points[0].z == self.points[1].z && self.points[1].z == self.points[2].z [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(self.points[0].z - self.points[1].z).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/stl/facet.rs:67:9 [INFO] [stderr] | [INFO] [stderr] 67 | self.points[0].z == self.points[1].z && self.points[1].z == self.points[2].z [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/stl/facet.rs:67:49 [INFO] [stderr] | [INFO] [stderr] 67 | self.points[0].z == self.points[1].z && self.points[1].z == self.points[2].z [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(self.points[1].z - self.points[2].z).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/stl/facet.rs:67:49 [INFO] [stderr] | [INFO] [stderr] 67 | self.points[0].z == self.points[1].z && self.points[1].z == self.points[2].z [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: called `filter(p).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(p)` instead. [INFO] [stderr] --> src/stl/facet.rs:73:9 [INFO] [stderr] | [INFO] [stderr] 73 | / self.points [INFO] [stderr] 74 | | .iter() [INFO] [stderr] 75 | | .tuple_combinations() // all facet's segments [INFO] [stderr] 76 | | .filter_map(|(p1, p2)| { [INFO] [stderr] ... | [INFO] [stderr] 80 | | .filter(|i| i[0] != i[1]) [INFO] [stderr] 81 | | .next() // in fact, there can be no more than 1, so just take it [INFO] [stderr] | |___________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::filter_next)] on by default [INFO] [stderr] = note: replace `filter(|i| i[0] != i[1]).next()` with `find(|i| i[0] != i[1])` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/stl/facet.rs:101:55 [INFO] [stderr] | [INFO] [stderr] 101 | } else if lower_z == height && higher_z == height { [INFO] [stderr] | _______________________________________________________^ [INFO] [stderr] 102 | | None // No points considered in this case [INFO] [stderr] 103 | | } else { [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/stl/facet.rs:99:46 [INFO] [stderr] | [INFO] [stderr] 99 | if height < lower_z || height > higher_z { [INFO] [stderr] | ______________________________________________^ [INFO] [stderr] 100 | | None [INFO] [stderr] 101 | | } else if lower_z == height && higher_z == height { [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/stl/facet.rs:101:15 [INFO] [stderr] | [INFO] [stderr] 101 | } else if lower_z == height && higher_z == height { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(lower_z - height).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/stl/facet.rs:101:15 [INFO] [stderr] | [INFO] [stderr] 101 | } else if lower_z == height && higher_z == height { [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/stl/facet.rs:101:36 [INFO] [stderr] | [INFO] [stderr] 101 | } else if lower_z == height && higher_z == height { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(higher_z - height).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/stl/facet.rs:101:36 [INFO] [stderr] | [INFO] [stderr] 101 | } else if lower_z == height && higher_z == height { [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: redundant closure found [INFO] [stderr] --> src/stl/mod.rs:78:22 [INFO] [stderr] | [INFO] [stderr] 78 | .map(|z| CuttingEvent::Cut(z)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `CuttingEvent::Cut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] error: this .into_iter() call is equivalent to .iter() and will not move the array [INFO] [stderr] --> src/overlap.rs:14:31 [INFO] [stderr] | [INFO] [stderr] 14 | for (i, p) in [1, -1].into_iter().zip(segment.ordered_points().iter()) { [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::into_iter_on_array)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_array [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/polygon/mod.rs:41:5 [INFO] [stderr] | [INFO] [stderr] 41 | / pub fn points<'a>(&'a self) -> &'a [Point] { [INFO] [stderr] 42 | | &self.points [INFO] [stderr] 43 | | } [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] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/polygon/mod.rs:177:20 [INFO] [stderr] | [INFO] [stderr] 177 | if points[0].y == y || points[2].y == y { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(points[0].y - y).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/polygon/mod.rs:177:20 [INFO] [stderr] | [INFO] [stderr] 177 | if points[0].y == y || points[2].y == y { [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/polygon/mod.rs:177:40 [INFO] [stderr] | [INFO] [stderr] 177 | if points[0].y == y || points[2].y == y { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(points[2].y - y).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/polygon/mod.rs:177:40 [INFO] [stderr] | [INFO] [stderr] 177 | if points[0].y == y || points[2].y == y { [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/polygon/mod.rs:179:27 [INFO] [stderr] | [INFO] [stderr] 179 | } else if points[1].y == y { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(points[1].y - y).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/polygon/mod.rs:179:27 [INFO] [stderr] | [INFO] [stderr] 179 | } else if points[1].y == y { [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/classifier.rs:7:1 [INFO] [stderr] | [INFO] [stderr] 7 | / pub fn brute_force_classification<'a>( [INFO] [stderr] 8 | | polygons: &'a [Polygon], [INFO] [stderr] 9 | | ) -> (Vec<(usize, usize)>, Vec, Vec) { [INFO] [stderr] 10 | | // our results [INFO] [stderr] ... | [INFO] [stderr] 66 | | (classified, roots, fathers) [INFO] [stderr] 67 | | } [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/utils/iterators.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | / fn wrapping_windows<'a>(&'a self, block_size: usize) [INFO] [stderr] 9 | | -> WrappingWindowsIterator<'a, Self::Item>; [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/utils/iterators.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | / fn wrapping_windows<'a>( [INFO] [stderr] 15 | | &'a self, [INFO] [stderr] 16 | | block_size: usize, [INFO] [stderr] 17 | | ) -> WrappingWindowsIterator<'a, Self::Item> { [INFO] [stderr] 18 | | wrapping_windows_fn(self, block_size) [INFO] [stderr] 19 | | } [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/utils/mod.rs:16:30 [INFO] [stderr] | [INFO] [stderr] 16 | Ordering::Greater => b.borrow().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*b.borrow()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/utils/mod.rs:17:14 [INFO] [stderr] | [INFO] [stderr] 17 | _ => a.borrow().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*a.borrow()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/utils/mod.rs:26:27 [INFO] [stderr] | [INFO] [stderr] 26 | Ordering::Less => b.borrow().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*b.borrow()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/utils/mod.rs:27:14 [INFO] [stderr] | [INFO] [stderr] 27 | _ => a.borrow().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*a.borrow()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] error: aborting due to 11 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `grouille`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: build failed [INFO] running `"docker" "inspect" "9995f6a508674ba513dc0e292a8ed996ce3881ea7435b1b16317ecad87d3dbfd"` [INFO] running `"docker" "rm" "-f" "9995f6a508674ba513dc0e292a8ed996ce3881ea7435b1b16317ecad87d3dbfd"` [INFO] [stdout] 9995f6a508674ba513dc0e292a8ed996ce3881ea7435b1b16317ecad87d3dbfd