[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