[INFO] crate ludomath 1.1.1 is already in cache [INFO] extracting crate ludomath 1.1.1 into work/ex/clippy-test-run/sources/stable/reg/ludomath/1.1.1 [INFO] extracting crate ludomath 1.1.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/ludomath/1.1.1 [INFO] validating manifest of ludomath-1.1.1 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of ludomath-1.1.1 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing ludomath-1.1.1 [INFO] finished frobbing ludomath-1.1.1 [INFO] frobbed toml for ludomath-1.1.1 written to work/ex/clippy-test-run/sources/stable/reg/ludomath/1.1.1/Cargo.toml [INFO] started frobbing ludomath-1.1.1 [INFO] finished frobbing ludomath-1.1.1 [INFO] frobbed toml for ludomath-1.1.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/ludomath/1.1.1/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting ludomath-1.1.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-7/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/ludomath/1.1.1:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 648b8e2ca6d4961982a67a394e3d4e283d7052c36fa06b48fbfcfec635366a9f [INFO] running `"docker" "start" "-a" "648b8e2ca6d4961982a67a394e3d4e283d7052c36fa06b48fbfcfec635366a9f"` [INFO] [stderr] Checking ludomath v1.1.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/vec2d.rs:40:18 [INFO] [stderr] | [INFO] [stderr] 40 | Vector { x: x, y: y } [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/vec2d.rs:40:24 [INFO] [stderr] | [INFO] [stderr] 40 | Vector { x: x, 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/vec2d.rs:326:17 [INFO] [stderr] | [INFO] [stderr] 326 | Point { x: x, y: y } [INFO] [stderr] | ^^^^ help: replace it with: `x` [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/vec2d.rs:326:23 [INFO] [stderr] | [INFO] [stderr] 326 | Point { x: x, 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/vec2d.rs:509:13 [INFO] [stderr] | [INFO] [stderr] 509 | cos: cos, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `cos` [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/vec2d.rs:510:13 [INFO] [stderr] | [INFO] [stderr] 510 | sin: sin, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `sin` [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/vec2d.rs:40:18 [INFO] [stderr] | [INFO] [stderr] 40 | Vector { x: x, y: y } [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/vec2d.rs:40:24 [INFO] [stderr] | [INFO] [stderr] 40 | Vector { x: x, 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/vec2d.rs:326:17 [INFO] [stderr] | [INFO] [stderr] 326 | Point { x: x, y: y } [INFO] [stderr] | ^^^^ help: replace it with: `x` [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/vec2d.rs:326:23 [INFO] [stderr] | [INFO] [stderr] 326 | Point { x: x, 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/vec2d.rs:509:13 [INFO] [stderr] | [INFO] [stderr] 509 | cos: cos, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `cos` [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/vec2d.rs:510:13 [INFO] [stderr] | [INFO] [stderr] 510 | sin: sin, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `sin` [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: long literal lacking separators [INFO] [stderr] --> src/num.rs:82:31 [INFO] [stderr] | [INFO] [stderr] 82 | const MAGIC_NUMBER: u32 = 0x5f375a86; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x5f37_5a86` [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: digits grouped inconsistently by underscores [INFO] [stderr] --> src/rng.rs:28:34 [INFO] [stderr] | [INFO] [stderr] 28 | let bit_pattern = mantissa | 0b0_01111111__0000000_00000000_00000000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider: `0b0011_1111_1000_0000_0000_0000_0000_0000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::inconsistent_digit_grouping)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#inconsistent_digit_grouping [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/rng.rs:59:27 [INFO] [stderr] | [INFO] [stderr] 59 | (0, 0) => Rng(0x988bafaf1dc4899c, 0x330ef5df7a448957), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0x988b_afaf_1dc4_899c` [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/rng.rs:59:47 [INFO] [stderr] | [INFO] [stderr] 59 | (0, 0) => Rng(0x988bafaf1dc4899c, 0x330ef5df7a448957), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0x330e_f5df_7a44_8957` [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/rng.rs:95:37 [INFO] [stderr] | [INFO] [stderr] 95 | const BIT_MASK: [u64; 2] = [0x8a5cd789635d2dff, 0x121fd2155c472f96]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0x8a5c_d789_635d_2dff` [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/rng.rs:95:57 [INFO] [stderr] | [INFO] [stderr] 95 | const BIT_MASK: [u64; 2] = [0x8a5cd789635d2dff, 0x121fd2155c472f96]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0x121f_d215_5c47_2f96` [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/consts.rs:14:22 [INFO] [stderr] | [INFO] [stderr] 14 | pub const TAU: f32 = 6.2831853; [INFO] [stderr] | ^^^^^^^^^ help: consider: `6.283_185_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/consts.rs:33:22 [INFO] [stderr] | [INFO] [stderr] 33 | const SQRT1_2: f32 = 0.70710678; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0.707_106_78` [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: transmute from a reference to a reference [INFO] [stderr] --> src/vec2d.rs:310:18 [INFO] [stderr] | [INFO] [stderr] 310 | unsafe { mem::transmute(arr) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `&*(arr as *const [[f32; 2]] as *const [vec2d::Vector])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_ptr_to_ptr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/vec2d.rs:318:18 [INFO] [stderr] | [INFO] [stderr] 318 | unsafe { mem::transmute(arr) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `&*(arr as *const [vec2d::Vector] as *const [[f32; 2]])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/vec2d.rs:463:18 [INFO] [stderr] | [INFO] [stderr] 463 | unsafe { mem::transmute(arr) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `&*(arr as *const [[f32; 2]] as *const [vec2d::Point])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/vec2d.rs:471:18 [INFO] [stderr] | [INFO] [stderr] 471 | unsafe { mem::transmute(arr) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `&*(arr as *const [vec2d::Point] as *const [[f32; 2]])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: defining a method called `add` on this type; consider implementing the `std::ops::Add` trait or choosing a less ambiguous name [INFO] [stderr] --> src/vec2d.rs:544:5 [INFO] [stderr] | [INFO] [stderr] 544 | / pub fn add(self, other: Rotation) -> Rotation { [INFO] [stderr] 545 | | // Equivalent to complex multiplication where `cos` [INFO] [stderr] 546 | | // is the real component and `sin` is the imaginary. [INFO] [stderr] 547 | | Rotation { [INFO] [stderr] ... | [INFO] [stderr] 550 | | } [INFO] [stderr] 551 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: defining a method called `sub` on this type; consider implementing the `std::ops::Sub` trait or choosing a less ambiguous name [INFO] [stderr] --> src/vec2d.rs:557:5 [INFO] [stderr] | [INFO] [stderr] 557 | / pub fn sub(self, other: Rotation) -> Rotation { [INFO] [stderr] 558 | | // Equivalent to `add()` but with the sign of `other.sin` reversed. [INFO] [stderr] 559 | | // Uses that cos -x = cos x, sin -x = -sin x. [INFO] [stderr] 560 | | Rotation { [INFO] [stderr] ... | [INFO] [stderr] 563 | | } [INFO] [stderr] 564 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/num.rs:82:31 [INFO] [stderr] | [INFO] [stderr] 82 | const MAGIC_NUMBER: u32 = 0x5f375a86; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x5f37_5a86` [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: digits grouped inconsistently by underscores [INFO] [stderr] --> src/rng.rs:28:34 [INFO] [stderr] | [INFO] [stderr] 28 | let bit_pattern = mantissa | 0b0_01111111__0000000_00000000_00000000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider: `0b0011_1111_1000_0000_0000_0000_0000_0000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::inconsistent_digit_grouping)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#inconsistent_digit_grouping [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/rng.rs:59:27 [INFO] [stderr] | [INFO] [stderr] 59 | (0, 0) => Rng(0x988bafaf1dc4899c, 0x330ef5df7a448957), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0x988b_afaf_1dc4_899c` [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/rng.rs:59:47 [INFO] [stderr] | [INFO] [stderr] 59 | (0, 0) => Rng(0x988bafaf1dc4899c, 0x330ef5df7a448957), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0x330e_f5df_7a44_8957` [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/rng.rs:95:37 [INFO] [stderr] | [INFO] [stderr] 95 | const BIT_MASK: [u64; 2] = [0x8a5cd789635d2dff, 0x121fd2155c472f96]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0x8a5c_d789_635d_2dff` [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/rng.rs:95:57 [INFO] [stderr] | [INFO] [stderr] 95 | const BIT_MASK: [u64; 2] = [0x8a5cd789635d2dff, 0x121fd2155c472f96]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0x121f_d215_5c47_2f96` [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/consts.rs:14:22 [INFO] [stderr] | [INFO] [stderr] 14 | pub const TAU: f32 = 6.2831853; [INFO] [stderr] | ^^^^^^^^^ help: consider: `6.283_185_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/consts.rs:33:22 [INFO] [stderr] | [INFO] [stderr] 33 | const SQRT1_2: f32 = 0.70710678; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0.707_106_78` [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: unnecessary parentheses around function argument [INFO] [stderr] --> src/tests.rs:240:19 [INFO] [stderr] | [INFO] [stderr] 240 | (VEC_LEFT + pivot)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/tests.rs:459:13 [INFO] [stderr] | [INFO] [stderr] 459 | let a = 1.231234; [INFO] [stderr] | ^^^^^^^^ help: consider: `1.231_234` [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: transmute from a reference to a reference [INFO] [stderr] --> src/vec2d.rs:914:18 [INFO] [stderr] | [INFO] [stderr] 914 | unsafe { mem::transmute(arr) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `&*(arr as *const [[[f32; 4]; 4]] as *const [vec2d::Transform])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/vec2d.rs:922:18 [INFO] [stderr] | [INFO] [stderr] 922 | unsafe { mem::transmute(arr) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `&*(arr as *const [vec2d::Transform] as *const [[[f32; 4]; 4]])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/vec2d.rs:977:9 [INFO] [stderr] | [INFO] [stderr] 977 | self.mat[0][0] * self.mat[1][1] != self.mat[0][1] * self.mat[1][0] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(self.mat[0][0] * self.mat[1][1] - self.mat[0][1] * self.mat[1][0]).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/vec2d.rs:977:9 [INFO] [stderr] | [INFO] [stderr] 977 | self.mat[0][0] * self.mat[1][1] != self.mat[0][1] * self.mat[1][0] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: transmute from a `u32` to a `f32` [INFO] [stderr] --> src/num.rs:86:27 [INFO] [stderr] | [INFO] [stderr] 86 | let y: f32 = unsafe { mem::transmute(hacked_bits) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `f32::from_bits(hacked_bits)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_int_to_float)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_int_to_float [INFO] [stderr] [INFO] [stderr] warning: transmute from a `u32` to a `f32` [INFO] [stderr] --> src/rng.rs:29:38 [INFO] [stderr] | [INFO] [stderr] 29 | let float_1_to_2: f32 = unsafe { mem::transmute(bit_pattern) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `f32::from_bits(bit_pattern)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_int_to_float [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `rng::Rng` [INFO] [stderr] --> src/rng.rs:47:5 [INFO] [stderr] | [INFO] [stderr] 47 | / pub fn new() -> Rng { [INFO] [stderr] 48 | | use rand::Rng as Rand; // for access to thread_rng [INFO] [stderr] 49 | | let (s0, s1) = rand::thread_rng().gen(); [INFO] [stderr] 50 | | Rng::new_seeded(s0, s1) [INFO] [stderr] 51 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 42 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/rng.rs:187:17 [INFO] [stderr] | [INFO] [stderr] 187 | assert!(arr.len() > 0, "A random element? There are no elements!"); [INFO] [stderr] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!arr.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: length comparison to zero [INFO] [stderr] --> src/rng.rs:198:17 [INFO] [stderr] | [INFO] [stderr] 198 | assert!(arr.len() > 0, "A random element? There are no elements!"); [INFO] [stderr] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!arr.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: float has excessive precision [INFO] [stderr] --> src/consts.rs:14:22 [INFO] [stderr] | [INFO] [stderr] 14 | pub const TAU: f32 = 6.2831853; [INFO] [stderr] | ^^^^^^^^^ help: consider changing the type or truncating it to: `6.283_185_5` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::excessive_precision)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#excessive_precision [INFO] [stderr] [INFO] [stderr] warning: float has excessive precision [INFO] [stderr] --> src/consts.rs:33:22 [INFO] [stderr] | [INFO] [stderr] 33 | const SQRT1_2: f32 = 0.70710678; [INFO] [stderr] | ^^^^^^^^^^ help: consider changing the type or truncating it to: `0.707_106_77` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#excessive_precision [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::FRAC_1_SQRT_2` found. Consider using it directly [INFO] [stderr] --> src/consts.rs:33:22 [INFO] [stderr] | [INFO] [stderr] 33 | const SQRT1_2: f32 = 0.70710678; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::approx_constant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `ludomath`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/vec2d.rs:310:18 [INFO] [stderr] | [INFO] [stderr] 310 | unsafe { mem::transmute(arr) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `&*(arr as *const [[f32; 2]] as *const [vec2d::Vector])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_ptr_to_ptr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/vec2d.rs:318:18 [INFO] [stderr] | [INFO] [stderr] 318 | unsafe { mem::transmute(arr) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `&*(arr as *const [vec2d::Vector] as *const [[f32; 2]])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/vec2d.rs:463:18 [INFO] [stderr] | [INFO] [stderr] 463 | unsafe { mem::transmute(arr) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `&*(arr as *const [[f32; 2]] as *const [vec2d::Point])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/vec2d.rs:471:18 [INFO] [stderr] | [INFO] [stderr] 471 | unsafe { mem::transmute(arr) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `&*(arr as *const [vec2d::Point] as *const [[f32; 2]])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: defining a method called `add` on this type; consider implementing the `std::ops::Add` trait or choosing a less ambiguous name [INFO] [stderr] --> src/vec2d.rs:544:5 [INFO] [stderr] | [INFO] [stderr] 544 | / pub fn add(self, other: Rotation) -> Rotation { [INFO] [stderr] 545 | | // Equivalent to complex multiplication where `cos` [INFO] [stderr] 546 | | // is the real component and `sin` is the imaginary. [INFO] [stderr] 547 | | Rotation { [INFO] [stderr] ... | [INFO] [stderr] 550 | | } [INFO] [stderr] 551 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: defining a method called `sub` on this type; consider implementing the `std::ops::Sub` trait or choosing a less ambiguous name [INFO] [stderr] --> src/vec2d.rs:557:5 [INFO] [stderr] | [INFO] [stderr] 557 | / pub fn sub(self, other: Rotation) -> Rotation { [INFO] [stderr] 558 | | // Equivalent to `add()` but with the sign of `other.sin` reversed. [INFO] [stderr] 559 | | // Uses that cos -x = cos x, sin -x = -sin x. [INFO] [stderr] 560 | | Rotation { [INFO] [stderr] ... | [INFO] [stderr] 563 | | } [INFO] [stderr] 564 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/vec2d.rs:914:18 [INFO] [stderr] | [INFO] [stderr] 914 | unsafe { mem::transmute(arr) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `&*(arr as *const [[[f32; 4]; 4]] as *const [vec2d::Transform])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/vec2d.rs:922:18 [INFO] [stderr] | [INFO] [stderr] 922 | unsafe { mem::transmute(arr) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `&*(arr as *const [vec2d::Transform] as *const [[[f32; 4]; 4]])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/vec2d.rs:977:9 [INFO] [stderr] | [INFO] [stderr] 977 | self.mat[0][0] * self.mat[1][1] != self.mat[0][1] * self.mat[1][0] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(self.mat[0][0] * self.mat[1][1] - self.mat[0][1] * self.mat[1][0]).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/vec2d.rs:977:9 [INFO] [stderr] | [INFO] [stderr] 977 | self.mat[0][0] * self.mat[1][1] != self.mat[0][1] * self.mat[1][0] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: transmute from a `u32` to a `f32` [INFO] [stderr] --> src/num.rs:86:27 [INFO] [stderr] | [INFO] [stderr] 86 | let y: f32 = unsafe { mem::transmute(hacked_bits) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `f32::from_bits(hacked_bits)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_int_to_float)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_int_to_float [INFO] [stderr] [INFO] [stderr] warning: transmute from a `u32` to a `f32` [INFO] [stderr] --> src/rng.rs:29:38 [INFO] [stderr] | [INFO] [stderr] 29 | let float_1_to_2: f32 = unsafe { mem::transmute(bit_pattern) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `f32::from_bits(bit_pattern)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_int_to_float [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `rng::Rng` [INFO] [stderr] --> src/rng.rs:47:5 [INFO] [stderr] | [INFO] [stderr] 47 | / pub fn new() -> Rng { [INFO] [stderr] 48 | | use rand::Rng as Rand; // for access to thread_rng [INFO] [stderr] 49 | | let (s0, s1) = rand::thread_rng().gen(); [INFO] [stderr] 50 | | Rng::new_seeded(s0, s1) [INFO] [stderr] 51 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 42 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/rng.rs:187:17 [INFO] [stderr] | [INFO] [stderr] 187 | assert!(arr.len() > 0, "A random element? There are no elements!"); [INFO] [stderr] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!arr.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: length comparison to zero [INFO] [stderr] --> src/rng.rs:198:17 [INFO] [stderr] | [INFO] [stderr] 198 | assert!(arr.len() > 0, "A random element? There are no elements!"); [INFO] [stderr] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!arr.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: float has excessive precision [INFO] [stderr] --> src/consts.rs:14:22 [INFO] [stderr] | [INFO] [stderr] 14 | pub const TAU: f32 = 6.2831853; [INFO] [stderr] | ^^^^^^^^^ help: consider changing the type or truncating it to: `6.283_185_5` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::excessive_precision)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#excessive_precision [INFO] [stderr] [INFO] [stderr] warning: float has excessive precision [INFO] [stderr] --> src/consts.rs:33:22 [INFO] [stderr] | [INFO] [stderr] 33 | const SQRT1_2: f32 = 0.70710678; [INFO] [stderr] | ^^^^^^^^^^ help: consider changing the type or truncating it to: `0.707_106_77` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#excessive_precision [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::FRAC_1_SQRT_2` found. Consider using it directly [INFO] [stderr] --> src/consts.rs:33:22 [INFO] [stderr] | [INFO] [stderr] 33 | const SQRT1_2: f32 = 0.70710678; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::approx_constant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/tests.rs:82:5 [INFO] [stderr] | [INFO] [stderr] 82 | p = p + v; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `p += v` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] error: equal expressions as operands to `-` [INFO] [stderr] --> src/tests.rs:88:9 [INFO] [stderr] | [INFO] [stderr] 88 | v = v - v; [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::eq_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eq_op [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/tests.rs:89:5 [INFO] [stderr] | [INFO] [stderr] 89 | p = p - v; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `p -= v` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] error: equal expressions as operands to `-` [INFO] [stderr] --> src/tests.rs:90:9 [INFO] [stderr] | [INFO] [stderr] 90 | v = p - p; [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eq_op [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/tests.rs:95:5 [INFO] [stderr] | [INFO] [stderr] 95 | v = v * s; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `v *= s` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/tests.rs:98:5 [INFO] [stderr] | [INFO] [stderr] 98 | v = v / s; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `v /= s` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/tests.rs:133:16 [INFO] [stderr] | [INFO] [stderr] 133 | let copy = v1.clone(); [INFO] [stderr] | ^^^^^^^^^^ help: try removing the `clone` call: `v1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/tests.rs:166:14 [INFO] [stderr] | [INFO] [stderr] 166 | let v2 = v1.clone(); [INFO] [stderr] | ^^^^^^^^^^ help: try removing the `clone` call: `v1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/tests.rs:216:14 [INFO] [stderr] | [INFO] [stderr] 216 | let v2 = v1.clone(); [INFO] [stderr] | ^^^^^^^^^^ help: try removing the `clone` call: `v1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/tests.rs:396:15 [INFO] [stderr] | [INFO] [stderr] 396 | let tf2 = tf1.clone(); [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `tf1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/tests.rs:408:15 [INFO] [stderr] | [INFO] [stderr] 408 | let tf2 = tf1.clone(); [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `tf1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/tests.rs:452:16 [INFO] [stderr] | [INFO] [stderr] 452 | let copy = coordsys2.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `coordsys2` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] error: aborting due to 4 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `ludomath`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "648b8e2ca6d4961982a67a394e3d4e283d7052c36fa06b48fbfcfec635366a9f"` [INFO] running `"docker" "rm" "-f" "648b8e2ca6d4961982a67a394e3d4e283d7052c36fa06b48fbfcfec635366a9f"` [INFO] [stdout] 648b8e2ca6d4961982a67a394e3d4e283d7052c36fa06b48fbfcfec635366a9f