[INFO] updating cached repository Piripant/estatic [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/Piripant/estatic [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/Piripant/estatic" "work/ex/clippy-test-run/sources/stable/gh/Piripant/estatic"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/Piripant/estatic'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/Piripant/estatic" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Piripant/estatic"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Piripant/estatic'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] ef2990f6f7dbb3e89bb40f119f2dae88fe2afac6 [INFO] sha for GitHub repo Piripant/estatic: ef2990f6f7dbb3e89bb40f119f2dae88fe2afac6 [INFO] validating manifest of Piripant/estatic 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 Piripant/estatic 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 Piripant/estatic [INFO] finished frobbing Piripant/estatic [INFO] frobbed toml for Piripant/estatic written to work/ex/clippy-test-run/sources/stable/gh/Piripant/estatic/Cargo.toml [INFO] started frobbing Piripant/estatic [INFO] finished frobbing Piripant/estatic [INFO] frobbed toml for Piripant/estatic written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Piripant/estatic/Cargo.toml [INFO] crate Piripant/estatic 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 Piripant/estatic against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-1/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/Piripant/estatic:/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] 8fdda8cec86f78abba90651b7fab0ae548381954ae240f9e393279808f0cdf40 [INFO] running `"docker" "start" "-a" "8fdda8cec86f78abba90651b7fab0ae548381954ae240f9e393279808f0cdf40"` [INFO] [stderr] Checking rand v0.5.0 [INFO] [stderr] Checking tempfile v3.0.2 [INFO] [stderr] Checking approx v0.2.0 [INFO] [stderr] Compiling syn v0.14.1 [INFO] [stderr] Checking gfx_core v0.8.2 [INFO] [stderr] Compiling gfx_gl v0.5.0 [INFO] [stderr] Checking pistoncore-input v0.21.0 [INFO] [stderr] Checking jpeg-decoder v0.1.14 [INFO] [stderr] Checking alga v0.6.0 [INFO] [stderr] Checking wayland-window v0.13.3 [INFO] [stderr] Checking winit v0.12.0 [INFO] [stderr] Checking nalgebra v0.15.1 [INFO] [stderr] Checking pistoncore-window v0.32.0 [INFO] [stderr] Compiling num-derive v0.2.2 [INFO] [stderr] Checking glutin v0.14.0 [INFO] [stderr] Checking image v0.19.0 [INFO] [stderr] Checking pistoncore-event_loop v0.37.0 [INFO] [stderr] Checking piston v0.37.0 [INFO] [stderr] Checking pistoncore-glutin_window v0.47.0 [INFO] [stderr] Checking gfx v0.17.1 [INFO] [stderr] Checking gfx_device_gl v0.15.2 [INFO] [stderr] Checking piston-gfx_texture v0.32.0 [INFO] [stderr] Checking piston2d-gfx_graphics v0.51.0 [INFO] [stderr] Checking piston_window v0.80.0 [INFO] [stderr] Checking estatic v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/viewer/mod.rs:10:27 [INFO] [stderr] | [INFO] [stderr] 10 | const POTENTIAL = 0b00000001; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0001` [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/viewer/mod.rs:11:23 [INFO] [stderr] | [INFO] [stderr] 11 | const FIELD = 0b00000010; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0010` [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/viewer/mod.rs:12:29 [INFO] [stderr] | [INFO] [stderr] 12 | const FIELD_LINES = 0b00000100; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0100` [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 u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/viewer/drawing.rs:79:57 [INFO] [stderr] | [INFO] [stderr] 79 | let position = view.get_screen_pos(0.0, view.world.height as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(view.world.height)` [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 u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/viewer/drawing.rs:144:31 [INFO] [stderr] | [INFO] [stderr] 144 | .get(&Vector::new(x as f64 + 0.5, y as f64 + 0.5)); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(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 u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/viewer/drawing.rs:144:47 [INFO] [stderr] | [INFO] [stderr] 144 | .get(&Vector::new(x as f64 + 0.5, y as f64 + 0.5)); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(y)` [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 `viewer::input::InputState` [INFO] [stderr] --> src/viewer/input.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | / pub fn new() -> InputState { [INFO] [stderr] 22 | | InputState { [INFO] [stderr] 23 | | last_cursor: Vector::new(0.0, 0.0), [INFO] [stderr] 24 | | cursor: Vector::new(0.0, 0.0), [INFO] [stderr] ... | [INFO] [stderr] 32 | | } [INFO] [stderr] 33 | | } [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] 20 | impl Default for viewer::input::InputState { [INFO] [stderr] 21 | fn default() -> Self { [INFO] [stderr] 22 | Self::new() [INFO] [stderr] 23 | } [INFO] [stderr] 24 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/viewer/input.rs:124:9 [INFO] [stderr] | [INFO] [stderr] 124 | / match key { [INFO] [stderr] 125 | | &Key::C => { [INFO] [stderr] 126 | | // Switch the sign of the charge [INFO] [stderr] 127 | | view.charge = -view.charge; [INFO] [stderr] ... | [INFO] [stderr] 146 | | _ => {} [INFO] [stderr] 147 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 124 | match *key { [INFO] [stderr] 125 | Key::C => { [INFO] [stderr] 126 | // Switch the sign of the charge [INFO] [stderr] 127 | view.charge = -view.charge; [INFO] [stderr] 128 | } [INFO] [stderr] 129 | Key::P => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/viewer/input.rs:142:35 [INFO] [stderr] | [INFO] [stderr] 142 | view.offset.x = -(view.world.width as f64 / 2.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(view.world.width)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/viewer/input.rs:143:33 [INFO] [stderr] | [INFO] [stderr] 143 | view.offset.y = view.world.height as f64 / 2.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(view.world.height)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/viewer/mod.rs:57:48 [INFO] [stderr] | [INFO] [stderr] 57 | (x + self.offset.x) * self.scale + self.width as f64 / 2.0, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.width)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/viewer/mod.rs:58:49 [INFO] [stderr] | [INFO] [stderr] 58 | (-y + self.offset.y) * self.scale + self.height as f64 / 2.0, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.height)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/viewer/mod.rs:65:18 [INFO] [stderr] | [INFO] [stderr] 65 | (x - self.width as f64 / 2.0) / self.scale - self.offset.x, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.width)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/viewer/mod.rs:66:19 [INFO] [stderr] | [INFO] [stderr] 66 | (-y + self.height as f64 / 2.0) / self.scale + self.offset.y, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.height)` [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: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/viewer/mod.rs:72:9 [INFO] [stderr] | [INFO] [stderr] 72 | / if x > self.width as f64 || y > self.height as f64 || x < 0.0 || y < 0.0 { [INFO] [stderr] 73 | | false [INFO] [stderr] 74 | | } else { [INFO] [stderr] 75 | | true [INFO] [stderr] 76 | | } [INFO] [stderr] | |_________^ help: you can reduce it to: `!(x > self.width as f64 || y > self.height as f64 || x < 0.0 || y < 0.0)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/viewer/mod.rs:72:16 [INFO] [stderr] | [INFO] [stderr] 72 | if x > self.width as f64 || y > self.height as f64 || x < 0.0 || y < 0.0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.width)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/viewer/mod.rs:72:41 [INFO] [stderr] | [INFO] [stderr] 72 | if x > self.width as f64 || y > self.height as f64 || x < 0.0 || y < 0.0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.height)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/viewer/mod.rs:81:27 [INFO] [stderr] | [INFO] [stderr] 81 | self.offset.x = -(self.world.width as f64 / 2.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.world.width)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/viewer/mod.rs:82:25 [INFO] [stderr] | [INFO] [stderr] 82 | self.offset.y = self.world.height as f64 / 2.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.world.height)` [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 u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/world.rs:27:30 [INFO] [stderr] | [INFO] [stderr] 27 | let x = position.x * self.ratio as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.ratio)` [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 u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/world.rs:28:30 [INFO] [stderr] | [INFO] [stderr] 28 | let y = position.y * self.ratio as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.ratio)` [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 u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/world.rs:36:30 [INFO] [stderr] | [INFO] [stderr] 36 | let x = position.x * self.ratio as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.ratio)` [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 u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/world.rs:37:30 [INFO] [stderr] | [INFO] [stderr] 37 | let y = position.y * self.ratio as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.ratio)` [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: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/world.rs:108:9 [INFO] [stderr] | [INFO] [stderr] 108 | / if x >= 0 && x < self.width as i32 && y >= 0 && y < self.height as i32 { [INFO] [stderr] 109 | | true [INFO] [stderr] 110 | | } else { [INFO] [stderr] 111 | | false [INFO] [stderr] 112 | | } [INFO] [stderr] | |_________^ help: you can reduce it to: `x >= 0 && x < self.width as i32 && y >= 0 && y < self.height as i32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/world.rs:177:67 [INFO] [stderr] | [INFO] [stderr] 177 | Vector::new(x as f64 + 0.5, y as f64 + 0.5) / self.field.ratio as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.field.ratio)` [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 i8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/world.rs:219:26 [INFO] [stderr] | [INFO] [stderr] 219 | let charge = charge.signum() as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(charge.signum())` [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/world.rs:222:44 [INFO] [stderr] | [INFO] [stderr] 222 | let mut position = Vector::new(x as f64 + 0.5, y as f64 + 0.5); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/world.rs:222:60 [INFO] [stderr] | [INFO] [stderr] 222 | let mut position = Vector::new(x as f64 + 0.5, y as f64 + 0.5); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(y)` [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/world.rs:240:20 [INFO] [stderr] | [INFO] [stderr] 240 | if angle.round() != old_angle.round() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(angle.round() - old_angle.round()).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/world.rs:240:20 [INFO] [stderr] | [INFO] [stderr] 240 | if angle.round() != old_angle.round() { [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: casting u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/world.rs:247:58 [INFO] [stderr] | [INFO] [stderr] 247 | position += force.normalize() * charge / self.field.ratio as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.field.ratio)` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/world.rs:266:22 [INFO] [stderr] | [INFO] [stderr] 266 | fn get_field(charge: &i8, delta: &Vector) -> (Vector, f64) { [INFO] [stderr] | ^^^ help: consider passing by value instead: `i8` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting i8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/world.rs:271:33 [INFO] [stderr] | [INFO] [stderr] 271 | delta.normalize() * *charge as f64 / delta.norm_squared(), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f64::from(*charge)` [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 i8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/world.rs:272:13 [INFO] [stderr] | [INFO] [stderr] 272 | *charge as f64 / delta.norm(), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f64::from(*charge)` [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 previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `estatic`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/viewer/mod.rs:10:27 [INFO] [stderr] | [INFO] [stderr] 10 | const POTENTIAL = 0b00000001; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0001` [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/viewer/mod.rs:11:23 [INFO] [stderr] | [INFO] [stderr] 11 | const FIELD = 0b00000010; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0010` [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/viewer/mod.rs:12:29 [INFO] [stderr] | [INFO] [stderr] 12 | const FIELD_LINES = 0b00000100; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0100` [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 u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/viewer/drawing.rs:79:57 [INFO] [stderr] | [INFO] [stderr] 79 | let position = view.get_screen_pos(0.0, view.world.height as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(view.world.height)` [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 u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/viewer/drawing.rs:144:31 [INFO] [stderr] | [INFO] [stderr] 144 | .get(&Vector::new(x as f64 + 0.5, y as f64 + 0.5)); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(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 u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/viewer/drawing.rs:144:47 [INFO] [stderr] | [INFO] [stderr] 144 | .get(&Vector::new(x as f64 + 0.5, y as f64 + 0.5)); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(y)` [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 `viewer::input::InputState` [INFO] [stderr] --> src/viewer/input.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | / pub fn new() -> InputState { [INFO] [stderr] 22 | | InputState { [INFO] [stderr] 23 | | last_cursor: Vector::new(0.0, 0.0), [INFO] [stderr] 24 | | cursor: Vector::new(0.0, 0.0), [INFO] [stderr] ... | [INFO] [stderr] 32 | | } [INFO] [stderr] 33 | | } [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] 20 | impl Default for viewer::input::InputState { [INFO] [stderr] 21 | fn default() -> Self { [INFO] [stderr] 22 | Self::new() [INFO] [stderr] 23 | } [INFO] [stderr] 24 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/viewer/input.rs:124:9 [INFO] [stderr] | [INFO] [stderr] 124 | / match key { [INFO] [stderr] 125 | | &Key::C => { [INFO] [stderr] 126 | | // Switch the sign of the charge [INFO] [stderr] 127 | | view.charge = -view.charge; [INFO] [stderr] ... | [INFO] [stderr] 146 | | _ => {} [INFO] [stderr] 147 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 124 | match *key { [INFO] [stderr] 125 | Key::C => { [INFO] [stderr] 126 | // Switch the sign of the charge [INFO] [stderr] 127 | view.charge = -view.charge; [INFO] [stderr] 128 | } [INFO] [stderr] 129 | Key::P => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/viewer/input.rs:142:35 [INFO] [stderr] | [INFO] [stderr] 142 | view.offset.x = -(view.world.width as f64 / 2.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(view.world.width)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/viewer/input.rs:143:33 [INFO] [stderr] | [INFO] [stderr] 143 | view.offset.y = view.world.height as f64 / 2.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(view.world.height)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/viewer/mod.rs:57:48 [INFO] [stderr] | [INFO] [stderr] 57 | (x + self.offset.x) * self.scale + self.width as f64 / 2.0, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.width)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/viewer/mod.rs:58:49 [INFO] [stderr] | [INFO] [stderr] 58 | (-y + self.offset.y) * self.scale + self.height as f64 / 2.0, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.height)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/viewer/mod.rs:65:18 [INFO] [stderr] | [INFO] [stderr] 65 | (x - self.width as f64 / 2.0) / self.scale - self.offset.x, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.width)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/viewer/mod.rs:66:19 [INFO] [stderr] | [INFO] [stderr] 66 | (-y + self.height as f64 / 2.0) / self.scale + self.offset.y, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.height)` [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: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/viewer/mod.rs:72:9 [INFO] [stderr] | [INFO] [stderr] 72 | / if x > self.width as f64 || y > self.height as f64 || x < 0.0 || y < 0.0 { [INFO] [stderr] 73 | | false [INFO] [stderr] 74 | | } else { [INFO] [stderr] 75 | | true [INFO] [stderr] 76 | | } [INFO] [stderr] | |_________^ help: you can reduce it to: `!(x > self.width as f64 || y > self.height as f64 || x < 0.0 || y < 0.0)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/viewer/mod.rs:72:16 [INFO] [stderr] | [INFO] [stderr] 72 | if x > self.width as f64 || y > self.height as f64 || x < 0.0 || y < 0.0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.width)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/viewer/mod.rs:72:41 [INFO] [stderr] | [INFO] [stderr] 72 | if x > self.width as f64 || y > self.height as f64 || x < 0.0 || y < 0.0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.height)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/viewer/mod.rs:81:27 [INFO] [stderr] | [INFO] [stderr] 81 | self.offset.x = -(self.world.width as f64 / 2.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.world.width)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/viewer/mod.rs:82:25 [INFO] [stderr] | [INFO] [stderr] 82 | self.offset.y = self.world.height as f64 / 2.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.world.height)` [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 u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/world.rs:27:30 [INFO] [stderr] | [INFO] [stderr] 27 | let x = position.x * self.ratio as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.ratio)` [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 u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/world.rs:28:30 [INFO] [stderr] | [INFO] [stderr] 28 | let y = position.y * self.ratio as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.ratio)` [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 u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/world.rs:36:30 [INFO] [stderr] | [INFO] [stderr] 36 | let x = position.x * self.ratio as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.ratio)` [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 u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/world.rs:37:30 [INFO] [stderr] | [INFO] [stderr] 37 | let y = position.y * self.ratio as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.ratio)` [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: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/world.rs:108:9 [INFO] [stderr] | [INFO] [stderr] 108 | / if x >= 0 && x < self.width as i32 && y >= 0 && y < self.height as i32 { [INFO] [stderr] 109 | | true [INFO] [stderr] 110 | | } else { [INFO] [stderr] 111 | | false [INFO] [stderr] 112 | | } [INFO] [stderr] | |_________^ help: you can reduce it to: `x >= 0 && x < self.width as i32 && y >= 0 && y < self.height as i32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/world.rs:177:67 [INFO] [stderr] | [INFO] [stderr] 177 | Vector::new(x as f64 + 0.5, y as f64 + 0.5) / self.field.ratio as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.field.ratio)` [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 i8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/world.rs:219:26 [INFO] [stderr] | [INFO] [stderr] 219 | let charge = charge.signum() as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(charge.signum())` [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/world.rs:222:44 [INFO] [stderr] | [INFO] [stderr] 222 | let mut position = Vector::new(x as f64 + 0.5, y as f64 + 0.5); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/world.rs:222:60 [INFO] [stderr] | [INFO] [stderr] 222 | let mut position = Vector::new(x as f64 + 0.5, y as f64 + 0.5); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(y)` [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/world.rs:240:20 [INFO] [stderr] | [INFO] [stderr] 240 | if angle.round() != old_angle.round() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(angle.round() - old_angle.round()).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/world.rs:240:20 [INFO] [stderr] | [INFO] [stderr] 240 | if angle.round() != old_angle.round() { [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: casting u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/world.rs:247:58 [INFO] [stderr] | [INFO] [stderr] 247 | position += force.normalize() * charge / self.field.ratio as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.field.ratio)` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/world.rs:266:22 [INFO] [stderr] | [INFO] [stderr] 266 | fn get_field(charge: &i8, delta: &Vector) -> (Vector, f64) { [INFO] [stderr] | ^^^ help: consider passing by value instead: `i8` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting i8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/world.rs:271:33 [INFO] [stderr] | [INFO] [stderr] 271 | delta.normalize() * *charge as f64 / delta.norm_squared(), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f64::from(*charge)` [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 i8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/world.rs:272:13 [INFO] [stderr] | [INFO] [stderr] 272 | *charge as f64 / delta.norm(), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f64::from(*charge)` [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 previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `estatic`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "8fdda8cec86f78abba90651b7fab0ae548381954ae240f9e393279808f0cdf40"` [INFO] running `"docker" "rm" "-f" "8fdda8cec86f78abba90651b7fab0ae548381954ae240f9e393279808f0cdf40"` [INFO] [stdout] 8fdda8cec86f78abba90651b7fab0ae548381954ae240f9e393279808f0cdf40