[INFO] updating cached repository uavaustin/pathfinder [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/uavaustin/pathfinder [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/uavaustin/pathfinder" "work/ex/clippy-test-run/sources/stable/gh/uavaustin/pathfinder"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/uavaustin/pathfinder'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/uavaustin/pathfinder" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/uavaustin/pathfinder"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/uavaustin/pathfinder'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 0e6b8092148ec0a991807620388a70ddceeee7f3 [INFO] sha for GitHub repo uavaustin/pathfinder: 0e6b8092148ec0a991807620388a70ddceeee7f3 [INFO] validating manifest of uavaustin/pathfinder 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 uavaustin/pathfinder 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 uavaustin/pathfinder [INFO] finished frobbing uavaustin/pathfinder [INFO] frobbed toml for uavaustin/pathfinder written to work/ex/clippy-test-run/sources/stable/gh/uavaustin/pathfinder/Cargo.toml [INFO] started frobbing uavaustin/pathfinder [INFO] finished frobbing uavaustin/pathfinder [INFO] frobbed toml for uavaustin/pathfinder written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/uavaustin/pathfinder/Cargo.toml [INFO] crate uavaustin/pathfinder 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 uavaustin/pathfinder against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/uavaustin/pathfinder:/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] 455e34fa10e6b83c4f2f2bb43ea9c5eb10587daf1de8aacb5255c79057bfbe1f [INFO] running `"docker" "start" "-a" "455e34fa10e6b83c4f2f2bb43ea9c5eb10587daf1de8aacb5255c79057bfbe1f"` [INFO] [stderr] Checking rand v0.5.1 [INFO] [stderr] Checking toml v0.4.6 [INFO] [stderr] Checking pathfinder v0.0.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/node.rs:52:13 [INFO] [stderr] | [INFO] [stderr] 52 | x: x, [INFO] [stderr] | ^^^^ help: replace it with: `x` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/node.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | y: y, [INFO] [stderr] | ^^^^ help: replace it with: `y` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/obj.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | alt: alt, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `alt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/obj.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | lat: lat, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `lat` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/obj.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | lon: lon, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `lon` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/obj.rs:31:13 [INFO] [stderr] | [INFO] [stderr] 31 | alt: alt, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `alt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/obj.rs:72:13 [INFO] [stderr] | [INFO] [stderr] 72 | radius: radius, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `radius` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/obj.rs:73:13 [INFO] [stderr] | [INFO] [stderr] 73 | height: height, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `height` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/obj.rs:80:13 [INFO] [stderr] | [INFO] [stderr] 80 | radius: radius, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `radius` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/obj.rs:81:13 [INFO] [stderr] | [INFO] [stderr] 81 | height: height, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `height` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/obj.rs:102:13 [INFO] [stderr] | [INFO] [stderr] 102 | location: location, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `location` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/obj.rs:138:13 [INFO] [stderr] | [INFO] [stderr] 138 | index: index, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `index` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/obj.rs:139:13 [INFO] [stderr] | [INFO] [stderr] 139 | location: location, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `location` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/obj.rs:140:13 [INFO] [stderr] | [INFO] [stderr] 140 | radius: radius, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `radius` [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: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/lib.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::deprecated_cfg_attr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/lib.rs:55:23 [INFO] [stderr] | [INFO] [stderr] 55 | const CFG_FILE_NAME: &'static str = "pathfinder.toml"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:56:32 [INFO] [stderr] | [INFO] [stderr] 56 | const EQUATORIAL_RADIUS: f64 = 63781370.0; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `63_781_370.0` [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/lib.rs:57:27 [INFO] [stderr] | [INFO] [stderr] 57 | const POLAR_RADIUS: f64 = 6356752.0; [INFO] [stderr] | ^^^^^^^^^ help: consider: `6_356_752.0` [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/lib.rs:58:21 [INFO] [stderr] | [INFO] [stderr] 58 | const RADIUS: f64 = 6371000.0; [INFO] [stderr] | ^^^^^^^^^ help: consider: `6_371_000.0` [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: unneeded return statement [INFO] [stderr] --> src/lib.rs:455:9 [INFO] [stderr] | [INFO] [stderr] 455 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [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: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/node.rs:62:19 [INFO] [stderr] | [INFO] [stderr] 62 | let lat = self.y as f64 * path_finder.grid_size as f64 / RADIUS + path_finder.origin.lat(); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f64::from(self.y)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/node.rs:62:35 [INFO] [stderr] | [INFO] [stderr] 62 | let lat = self.y as f64 * path_finder.grid_size as f64 / RADIUS + path_finder.origin.lat(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(path_finder.grid_size)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/node.rs:63:21 [INFO] [stderr] | [INFO] [stderr] 63 | let lon = ((self.x as f64 * path_finder.grid_size as f64 / RADIUS / 2f64).sin() / lat.cos()) [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f64::from(self.x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/node.rs:63:37 [INFO] [stderr] | [INFO] [stderr] 63 | let lon = ((self.x as f64 * path_finder.grid_size as f64 / RADIUS / 2f64).sin() / lat.cos()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(path_finder.grid_size)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/obj.rs:40:18 [INFO] [stderr] | [INFO] [stderr] 40 | (x / path_finder.grid_size as f64).floor() as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(path_finder.grid_size)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/obj.rs:41:18 [INFO] [stderr] | [INFO] [stderr] 41 | (y / path_finder.grid_size as f64).floor() as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(path_finder.grid_size)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `Pathfinder` [INFO] [stderr] --> src/lib.rs:120:5 [INFO] [stderr] | [INFO] [stderr] 120 | / pub fn new() -> Pathfinder { [INFO] [stderr] 121 | | let (mut direct_path_modifier_weight, mut heading_modifier_weight) = get_modifiers(); [INFO] [stderr] 122 | | if let Ok(env) = env::var("DIRECT_PATH_MODIFIER_WEIGHT") { [INFO] [stderr] 123 | | if let Ok(val) = str::parse::(&env) { [INFO] [stderr] ... | [INFO] [stderr] 161 | | } [INFO] [stderr] 162 | | } [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] 119 | impl Default for Pathfinder { [INFO] [stderr] 120 | fn default() -> Self { [INFO] [stderr] 121 | Self::new() [INFO] [stderr] 122 | } [INFO] [stderr] 123 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:195:30 [INFO] [stderr] | [INFO] [stderr] 195 | fn find_origin(flyzones: &Vec>) -> Point { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[Vec]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:202:17 [INFO] [stderr] | [INFO] [stderr] 202 | assert!(flyzones.len() > 0, "Require at least one flyzone"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!flyzones.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `flyzones`. [INFO] [stderr] --> src/lib.rs:203:18 [INFO] [stderr] | [INFO] [stderr] 203 | for i in 0..flyzones.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 203 | for in &flyzones { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/lib.rs:247:43 [INFO] [stderr] | [INFO] [stderr] 247 | while indep > indep_goal && !(indep == indep_goal && dep == dep_goal) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(indep - indep_goal).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/lib.rs:247:43 [INFO] [stderr] | [INFO] [stderr] 247 | while indep > indep_goal && !(indep == indep_goal && dep == dep_goal) { [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/lib.rs:247:66 [INFO] [stderr] | [INFO] [stderr] 247 | while indep > indep_goal && !(indep == indep_goal && dep == dep_goal) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(dep - dep_goal).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/lib.rs:247:66 [INFO] [stderr] | [INFO] [stderr] 247 | while indep > indep_goal && !(indep == indep_goal && dep == dep_goal) { [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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/lib.rs:250:17 [INFO] [stderr] | [INFO] [stderr] 250 | / let buffer; [INFO] [stderr] 251 | | if invert { [INFO] [stderr] 252 | | self.obstacle_list [INFO] [stderr] 253 | | .insert(Node::new(dep.floor() as i32, indep.floor() as i32)); [INFO] [stderr] ... | [INFO] [stderr] 258 | | buffer = Node::new(indep as i32 + 1, dep as i32); [INFO] [stderr] 259 | | } [INFO] [stderr] | |_________________^ help: it is more idiomatic to write: `let buffer = if invert { ..; Node::new(dep as i32, indep as i32 + 1) } else { ..; Node::new(indep as i32 + 1, dep as i32) };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/lib.rs:263:43 [INFO] [stderr] | [INFO] [stderr] 263 | while indep < indep_goal && !(indep == indep_goal && dep == dep_goal) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(indep - indep_goal).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/lib.rs:263:43 [INFO] [stderr] | [INFO] [stderr] 263 | while indep < indep_goal && !(indep == indep_goal && dep == dep_goal) { [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/lib.rs:263:66 [INFO] [stderr] | [INFO] [stderr] 263 | while indep < indep_goal && !(indep == indep_goal && dep == dep_goal) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(dep - dep_goal).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/lib.rs:263:66 [INFO] [stderr] | [INFO] [stderr] 263 | while indep < indep_goal && !(indep == indep_goal && dep == dep_goal) { [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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/lib.rs:266:17 [INFO] [stderr] | [INFO] [stderr] 266 | / let buffer; [INFO] [stderr] 267 | | if invert { [INFO] [stderr] 268 | | self.obstacle_list [INFO] [stderr] 269 | | .insert(Node::new(dep.floor() as i32, indep.floor() as i32)); [INFO] [stderr] ... | [INFO] [stderr] 274 | | buffer = Node::new(indep as i32 - 1, dep as i32); [INFO] [stderr] 275 | | } [INFO] [stderr] | |_________________^ help: it is more idiomatic to write: `let buffer = if invert { ..; Node::new(dep as i32, indep as i32 - 1) } else { ..; Node::new(indep as i32 - 1, dep as i32) };` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:419:21 [INFO] [stderr] | [INFO] [stderr] 419 | f_cost: (dx + dy) as f64 + (SQRT_2 - 2f64 * UNIT_COST) * dx.min(dy) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `f64::from(dx + dy)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:419:70 [INFO] [stderr] | [INFO] [stderr] 419 | f_cost: (dx + dy) as f64 + (SQRT_2 - 2f64 * UNIT_COST) * dx.min(dy) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(dx.min(dy))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: this .into_iter() call is equivalent to .iter() and will not move the array [INFO] [stderr] --> src/lib.rs:459:53 [INFO] [stderr] | [INFO] [stderr] 459 | for &(x_offset, y_offset, g_cost) in OFFSET.into_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: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:486:29 [INFO] [stderr] | [INFO] [stderr] 486 | let (dx, dy) = (v.0.abs() as f64, v.1.abs() as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `f64::from(v.0.abs())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:486:47 [INFO] [stderr] | [INFO] [stderr] 486 | let (dx, dy) = (v.0.abs() as f64, v.1.abs() as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `f64::from(v.1.abs())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:521:19 [INFO] [stderr] | [INFO] [stderr] 521 | + direct_path_modifier as f64 * self.DIRECT_PATH_MODIFIER_WEIGHT [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(direct_path_modifier)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:649:53 [INFO] [stderr] | [INFO] [stderr] 649 | self.max_process_time = Duration::from_secs(max_process_time as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(max_process_time)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: aborting due to 5 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `pathfinder`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/node.rs:52:13 [INFO] [stderr] | [INFO] [stderr] 52 | x: x, [INFO] [stderr] | ^^^^ help: replace it with: `x` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/node.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | y: y, [INFO] [stderr] | ^^^^ help: replace it with: `y` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/obj.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | alt: alt, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `alt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/obj.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | lat: lat, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `lat` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/obj.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | lon: lon, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `lon` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/obj.rs:31:13 [INFO] [stderr] | [INFO] [stderr] 31 | alt: alt, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `alt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/obj.rs:72:13 [INFO] [stderr] | [INFO] [stderr] 72 | radius: radius, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `radius` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/obj.rs:73:13 [INFO] [stderr] | [INFO] [stderr] 73 | height: height, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `height` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/obj.rs:80:13 [INFO] [stderr] | [INFO] [stderr] 80 | radius: radius, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `radius` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/obj.rs:81:13 [INFO] [stderr] | [INFO] [stderr] 81 | height: height, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `height` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/obj.rs:102:13 [INFO] [stderr] | [INFO] [stderr] 102 | location: location, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `location` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/obj.rs:138:13 [INFO] [stderr] | [INFO] [stderr] 138 | index: index, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `index` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/obj.rs:139:13 [INFO] [stderr] | [INFO] [stderr] 139 | location: location, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `location` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/obj.rs:140:13 [INFO] [stderr] | [INFO] [stderr] 140 | radius: radius, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `radius` [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: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/lib.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::deprecated_cfg_attr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: unary minus has lower precedence than method call [INFO] [stderr] --> src/util.rs:77:23 [INFO] [stderr] | [INFO] [stderr] 77 | let v = (0.5, -3f32.sqrt() / 2f32); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider adding parentheses to clarify your intent: `-(3f32.sqrt())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::precedence)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#precedence [INFO] [stderr] [INFO] [stderr] warning: unary minus has lower precedence than method call [INFO] [stderr] --> src/util.rs:89:23 [INFO] [stderr] | [INFO] [stderr] 89 | let u = (0.5, -3f32.sqrt() / 2f32); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider adding parentheses to clarify your intent: `-(3f32.sqrt())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#precedence [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/lib.rs:55:23 [INFO] [stderr] | [INFO] [stderr] 55 | const CFG_FILE_NAME: &'static str = "pathfinder.toml"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:56:32 [INFO] [stderr] | [INFO] [stderr] 56 | const EQUATORIAL_RADIUS: f64 = 63781370.0; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `63_781_370.0` [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/lib.rs:57:27 [INFO] [stderr] | [INFO] [stderr] 57 | const POLAR_RADIUS: f64 = 6356752.0; [INFO] [stderr] | ^^^^^^^^^ help: consider: `6_356_752.0` [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/lib.rs:58:21 [INFO] [stderr] | [INFO] [stderr] 58 | const RADIUS: f64 = 6371000.0; [INFO] [stderr] | ^^^^^^^^^ help: consider: `6_371_000.0` [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: unneeded return statement [INFO] [stderr] --> src/lib.rs:455:9 [INFO] [stderr] | [INFO] [stderr] 455 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [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: long literal lacking separators [INFO] [stderr] --> src/lib.rs:705:37 [INFO] [stderr] | [INFO] [stderr] 705 | Point::from_degrees(50.06638888888889, -5.714722222222222, 0f32), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider: `50.066_388_888_888_89` [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/lib.rs:705:57 [INFO] [stderr] | [INFO] [stderr] 705 | Point::from_degrees(50.06638888888889, -5.714722222222222, 0f32), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider: `5.714_722_222_222_222` [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/lib.rs:706:37 [INFO] [stderr] | [INFO] [stderr] 706 | Point::from_degrees(58.64388888888889, -5.714722222222222, 0f32), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider: `58.643_888_888_888_89` [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/lib.rs:706:57 [INFO] [stderr] | [INFO] [stderr] 706 | Point::from_degrees(58.64388888888889, -5.714722222222222, 0f32), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider: `5.714_722_222_222_222` [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/lib.rs:707:37 [INFO] [stderr] | [INFO] [stderr] 707 | Point::from_degrees(50.06638888888889, -3.0700000000000003, 0f32), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider: `50.066_388_888_888_89` [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/lib.rs:707:57 [INFO] [stderr] | [INFO] [stderr] 707 | Point::from_degrees(50.06638888888889, -3.0700000000000003, 0f32), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `3.070_000_000_000_000_3` [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/lib.rs:713:41 [INFO] [stderr] | [INFO] [stderr] 713 | assert_eq!(origin.lat_degree(), 50.06638888888889); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider: `50.066_388_888_888_89` [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/lib.rs:714:42 [INFO] [stderr] | [INFO] [stderr] 714 | assert_eq!(origin.lon_degree(), -5.714722222222222); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider: `5.714_722_222_222_222` [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: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/node.rs:62:19 [INFO] [stderr] | [INFO] [stderr] 62 | let lat = self.y as f64 * path_finder.grid_size as f64 / RADIUS + path_finder.origin.lat(); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f64::from(self.y)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/node.rs:62:35 [INFO] [stderr] | [INFO] [stderr] 62 | let lat = self.y as f64 * path_finder.grid_size as f64 / RADIUS + path_finder.origin.lat(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(path_finder.grid_size)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/node.rs:63:21 [INFO] [stderr] | [INFO] [stderr] 63 | let lon = ((self.x as f64 * path_finder.grid_size as f64 / RADIUS / 2f64).sin() / lat.cos()) [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `f64::from(self.x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/node.rs:63:37 [INFO] [stderr] | [INFO] [stderr] 63 | let lon = ((self.x as f64 * path_finder.grid_size as f64 / RADIUS / 2f64).sin() / lat.cos()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(path_finder.grid_size)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/obj.rs:40:18 [INFO] [stderr] | [INFO] [stderr] 40 | (x / path_finder.grid_size as f64).floor() as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(path_finder.grid_size)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/obj.rs:41:18 [INFO] [stderr] | [INFO] [stderr] 41 | (y / path_finder.grid_size as f64).floor() as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(path_finder.grid_size)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `Pathfinder` [INFO] [stderr] --> src/lib.rs:120:5 [INFO] [stderr] | [INFO] [stderr] 120 | / pub fn new() -> Pathfinder { [INFO] [stderr] 121 | | let (mut direct_path_modifier_weight, mut heading_modifier_weight) = get_modifiers(); [INFO] [stderr] 122 | | if let Ok(env) = env::var("DIRECT_PATH_MODIFIER_WEIGHT") { [INFO] [stderr] 123 | | if let Ok(val) = str::parse::(&env) { [INFO] [stderr] ... | [INFO] [stderr] 161 | | } [INFO] [stderr] 162 | | } [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] 119 | impl Default for Pathfinder { [INFO] [stderr] 120 | fn default() -> Self { [INFO] [stderr] 121 | Self::new() [INFO] [stderr] 122 | } [INFO] [stderr] 123 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:195:30 [INFO] [stderr] | [INFO] [stderr] 195 | fn find_origin(flyzones: &Vec>) -> Point { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[Vec]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:202:17 [INFO] [stderr] | [INFO] [stderr] 202 | assert!(flyzones.len() > 0, "Require at least one flyzone"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!flyzones.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `flyzones`. [INFO] [stderr] --> src/lib.rs:203:18 [INFO] [stderr] | [INFO] [stderr] 203 | for i in 0..flyzones.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 203 | for in &flyzones { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/lib.rs:247:43 [INFO] [stderr] | [INFO] [stderr] 247 | while indep > indep_goal && !(indep == indep_goal && dep == dep_goal) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(indep - indep_goal).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/lib.rs:247:43 [INFO] [stderr] | [INFO] [stderr] 247 | while indep > indep_goal && !(indep == indep_goal && dep == dep_goal) { [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/lib.rs:247:66 [INFO] [stderr] | [INFO] [stderr] 247 | while indep > indep_goal && !(indep == indep_goal && dep == dep_goal) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(dep - dep_goal).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/lib.rs:247:66 [INFO] [stderr] | [INFO] [stderr] 247 | while indep > indep_goal && !(indep == indep_goal && dep == dep_goal) { [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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/lib.rs:250:17 [INFO] [stderr] | [INFO] [stderr] 250 | / let buffer; [INFO] [stderr] 251 | | if invert { [INFO] [stderr] 252 | | self.obstacle_list [INFO] [stderr] 253 | | .insert(Node::new(dep.floor() as i32, indep.floor() as i32)); [INFO] [stderr] ... | [INFO] [stderr] 258 | | buffer = Node::new(indep as i32 + 1, dep as i32); [INFO] [stderr] 259 | | } [INFO] [stderr] | |_________________^ help: it is more idiomatic to write: `let buffer = if invert { ..; Node::new(dep as i32, indep as i32 + 1) } else { ..; Node::new(indep as i32 + 1, dep as i32) };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/lib.rs:263:43 [INFO] [stderr] | [INFO] [stderr] 263 | while indep < indep_goal && !(indep == indep_goal && dep == dep_goal) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(indep - indep_goal).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/lib.rs:263:43 [INFO] [stderr] | [INFO] [stderr] 263 | while indep < indep_goal && !(indep == indep_goal && dep == dep_goal) { [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/lib.rs:263:66 [INFO] [stderr] | [INFO] [stderr] 263 | while indep < indep_goal && !(indep == indep_goal && dep == dep_goal) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(dep - dep_goal).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/lib.rs:263:66 [INFO] [stderr] | [INFO] [stderr] 263 | while indep < indep_goal && !(indep == indep_goal && dep == dep_goal) { [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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/lib.rs:266:17 [INFO] [stderr] | [INFO] [stderr] 266 | / let buffer; [INFO] [stderr] 267 | | if invert { [INFO] [stderr] 268 | | self.obstacle_list [INFO] [stderr] 269 | | .insert(Node::new(dep.floor() as i32, indep.floor() as i32)); [INFO] [stderr] ... | [INFO] [stderr] 274 | | buffer = Node::new(indep as i32 - 1, dep as i32); [INFO] [stderr] 275 | | } [INFO] [stderr] | |_________________^ help: it is more idiomatic to write: `let buffer = if invert { ..; Node::new(dep as i32, indep as i32 - 1) } else { ..; Node::new(indep as i32 - 1, dep as i32) };` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:419:21 [INFO] [stderr] | [INFO] [stderr] 419 | f_cost: (dx + dy) as f64 + (SQRT_2 - 2f64 * UNIT_COST) * dx.min(dy) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `f64::from(dx + dy)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:419:70 [INFO] [stderr] | [INFO] [stderr] 419 | f_cost: (dx + dy) as f64 + (SQRT_2 - 2f64 * UNIT_COST) * dx.min(dy) as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(dx.min(dy))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: this .into_iter() call is equivalent to .iter() and will not move the array [INFO] [stderr] --> src/lib.rs:459:53 [INFO] [stderr] | [INFO] [stderr] 459 | for &(x_offset, y_offset, g_cost) in OFFSET.into_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: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:486:29 [INFO] [stderr] | [INFO] [stderr] 486 | let (dx, dy) = (v.0.abs() as f64, v.1.abs() as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `f64::from(v.0.abs())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:486:47 [INFO] [stderr] | [INFO] [stderr] 486 | let (dx, dy) = (v.0.abs() as f64, v.1.abs() as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `f64::from(v.1.abs())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:521:19 [INFO] [stderr] | [INFO] [stderr] 521 | + direct_path_modifier as f64 * self.DIRECT_PATH_MODIFIER_WEIGHT [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(direct_path_modifier)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:649:53 [INFO] [stderr] | [INFO] [stderr] 649 | self.max_process_time = Duration::from_secs(max_process_time as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(max_process_time)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/lib.rs:713:9 [INFO] [stderr] | [INFO] [stderr] 713 | assert_eq!(origin.lat_degree(), 50.06638888888889); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/lib.rs:713:9 [INFO] [stderr] | [INFO] [stderr] 713 | assert_eq!(origin.lat_degree(), 50.06638888888889); [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/lib.rs:714:9 [INFO] [stderr] | [INFO] [stderr] 714 | assert_eq!(origin.lon_degree(), -5.714722222222222); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/lib.rs:714:9 [INFO] [stderr] | [INFO] [stderr] 714 | assert_eq!(origin.lon_degree(), -5.714722222222222); [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/lib.rs:731:9 [INFO] [stderr] | [INFO] [stderr] 731 | assert_eq!(origin.lat_degree(), 30.32082); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/lib.rs:731:9 [INFO] [stderr] | [INFO] [stderr] 731 | assert_eq!(origin.lat_degree(), 30.32082); [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/lib.rs:732:9 [INFO] [stderr] | [INFO] [stderr] 732 | assert_eq!(origin.lon_degree(), -97.60398); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/lib.rs:732:9 [INFO] [stderr] | [INFO] [stderr] 732 | assert_eq!(origin.lon_degree(), -97.60398); [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: aborting due to 9 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `pathfinder`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "455e34fa10e6b83c4f2f2bb43ea9c5eb10587daf1de8aacb5255c79057bfbe1f"` [INFO] running `"docker" "rm" "-f" "455e34fa10e6b83c4f2f2bb43ea9c5eb10587daf1de8aacb5255c79057bfbe1f"` [INFO] [stdout] 455e34fa10e6b83c4f2f2bb43ea9c5eb10587daf1de8aacb5255c79057bfbe1f