[INFO] crate affine_transforms 0.2.0 is already in cache [INFO] extracting crate affine_transforms 0.2.0 into work/ex/clippy-test-run/sources/stable/reg/affine_transforms/0.2.0 [INFO] extracting crate affine_transforms 0.2.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/affine_transforms/0.2.0 [INFO] validating manifest of affine_transforms-0.2.0 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 affine_transforms-0.2.0 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 affine_transforms-0.2.0 [INFO] finished frobbing affine_transforms-0.2.0 [INFO] frobbed toml for affine_transforms-0.2.0 written to work/ex/clippy-test-run/sources/stable/reg/affine_transforms/0.2.0/Cargo.toml [INFO] started frobbing affine_transforms-0.2.0 [INFO] finished frobbing affine_transforms-0.2.0 [INFO] frobbed toml for affine_transforms-0.2.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/affine_transforms/0.2.0/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 affine_transforms-0.2.0 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/reg/affine_transforms/0.2.0:/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] a86c08a69fe93b9fe32867c0592a3ec7c3cff862dea2685d69e04c9a4c20f3ab [INFO] running `"docker" "start" "-a" "a86c08a69fe93b9fe32867c0592a3ec7c3cff862dea2685d69e04c9a4c20f3ab"` [INFO] [stderr] Checking affine_transforms v0.2.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/vectors.rs:24:18 [INFO] [stderr] | [INFO] [stderr] 24 | Vector { x: x, y: y, z: z } [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/vectors.rs:24:24 [INFO] [stderr] | [INFO] [stderr] 24 | Vector { x: x, y: y, z: z } [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/vectors.rs:24:30 [INFO] [stderr] | [INFO] [stderr] 24 | Vector { x: x, y: y, z: z } [INFO] [stderr] | ^^^^ help: replace it with: `z` [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/vectors.rs:77:56 [INFO] [stderr] | [INFO] [stderr] 77 | pub fn with_x(&self, x : f64) -> Vector { Vector { x: x, y: self.y, z: self.z } } [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/vectors.rs:78:67 [INFO] [stderr] | [INFO] [stderr] 78 | pub fn with_y(&self, y : f64) -> Vector { Vector { x: self.x, y: y, z: self.z } } [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/vectors.rs:79:78 [INFO] [stderr] | [INFO] [stderr] 79 | pub fn with_z(&self, z : f64) -> Vector { Vector { x: self.x, y: self.y, z: z } } [INFO] [stderr] | ^^^^ help: replace it with: `z` [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/vectors.rs:142:81 [INFO] [stderr] | [INFO] [stderr] 142 | pub fn new(x: f64, y: f64, z: f64, w: f64) -> AffineVector { AffineVector { x: x, y: y, z: z, w: w } } [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/vectors.rs:142:87 [INFO] [stderr] | [INFO] [stderr] 142 | pub fn new(x: f64, y: f64, z: f64, w: f64) -> AffineVector { AffineVector { x: x, y: y, z: z, w: w } } [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/vectors.rs:142:93 [INFO] [stderr] | [INFO] [stderr] 142 | pub fn new(x: f64, y: f64, z: f64, w: f64) -> AffineVector { AffineVector { x: x, y: y, z: z, w: w } } [INFO] [stderr] | ^^^^ help: replace it with: `z` [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/vectors.rs:142:99 [INFO] [stderr] | [INFO] [stderr] 142 | pub fn new(x: f64, y: f64, z: f64, w: f64) -> AffineVector { AffineVector { x: x, y: y, z: z, w: w } } [INFO] [stderr] | ^^^^ help: replace it with: `w` [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/vectors.rs:24:18 [INFO] [stderr] | [INFO] [stderr] 24 | Vector { x: x, y: y, z: z } [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/vectors.rs:24:24 [INFO] [stderr] | [INFO] [stderr] 24 | Vector { x: x, y: y, z: z } [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/vectors.rs:24:30 [INFO] [stderr] | [INFO] [stderr] 24 | Vector { x: x, y: y, z: z } [INFO] [stderr] | ^^^^ help: replace it with: `z` [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/vectors.rs:77:56 [INFO] [stderr] | [INFO] [stderr] 77 | pub fn with_x(&self, x : f64) -> Vector { Vector { x: x, y: self.y, z: self.z } } [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/vectors.rs:78:67 [INFO] [stderr] | [INFO] [stderr] 78 | pub fn with_y(&self, y : f64) -> Vector { Vector { x: self.x, y: y, z: self.z } } [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/vectors.rs:79:78 [INFO] [stderr] | [INFO] [stderr] 79 | pub fn with_z(&self, z : f64) -> Vector { Vector { x: self.x, y: self.y, z: z } } [INFO] [stderr] | ^^^^ help: replace it with: `z` [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/vectors.rs:142:81 [INFO] [stderr] | [INFO] [stderr] 142 | pub fn new(x: f64, y: f64, z: f64, w: f64) -> AffineVector { AffineVector { x: x, y: y, z: z, w: w } } [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/vectors.rs:142:87 [INFO] [stderr] | [INFO] [stderr] 142 | pub fn new(x: f64, y: f64, z: f64, w: f64) -> AffineVector { AffineVector { x: x, y: y, z: z, w: w } } [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/vectors.rs:142:93 [INFO] [stderr] | [INFO] [stderr] 142 | pub fn new(x: f64, y: f64, z: f64, w: f64) -> AffineVector { AffineVector { x: x, y: y, z: z, w: w } } [INFO] [stderr] | ^^^^ help: replace it with: `z` [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/vectors.rs:142:99 [INFO] [stderr] | [INFO] [stderr] 142 | pub fn new(x: f64, y: f64, z: f64, w: f64) -> AffineVector { AffineVector { x: x, y: y, z: z, w: w } } [INFO] [stderr] | ^^^^ help: replace it with: `w` [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: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/vectors.rs:28:21 [INFO] [stderr] | [INFO] [stderr] 28 | Vector { x: x as f64, y: y as f64, z: z as f64 } [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(x)` [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/vectors.rs:28:34 [INFO] [stderr] | [INFO] [stderr] 28 | Vector { x: x as f64, y: y as f64, z: z as f64 } [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: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/vectors.rs:28:47 [INFO] [stderr] | [INFO] [stderr] 28 | Vector { x: x as f64, y: y as f64, z: z as f64 } [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(z)` [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 don't need to add `&` to all patterns [INFO] [stderr] --> src/matrices.rs:15:9 [INFO] [stderr] | [INFO] [stderr] 15 | / match self { [INFO] [stderr] 16 | | &Cell::I1 => Cell::Column(0), &Cell::J1 => Cell::Column(4), &Cell::K1 => Cell::Column(8), &Cell::W1 => Cell::Column(12), [INFO] [stderr] 17 | | &Cell::I2 => Cell::Column(1), &Cell::J2 => Cell::Column(5), &Cell::K2 => Cell::Column(9), &Cell::W2 => Cell::Column(13), [INFO] [stderr] 18 | | &Cell::I3 => Cell::Column(2), &Cell::J3 => Cell::Column(6), &Cell::K3 => Cell::Column(10), &Cell::W3 => Cell::Column(14), [INFO] [stderr] ... | [INFO] [stderr] 21 | | &Cell::Row(i) => Cell::Column((i * 4 % 16) + (i / 4)) [INFO] [stderr] 22 | | } [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] 15 | match *self { [INFO] [stderr] 16 | Cell::I1 => Cell::Column(0), Cell::J1 => Cell::Column(4), Cell::K1 => Cell::Column(8), Cell::W1 => Cell::Column(12), [INFO] [stderr] 17 | Cell::I2 => Cell::Column(1), Cell::J2 => Cell::Column(5), Cell::K2 => Cell::Column(9), Cell::W2 => Cell::Column(13), [INFO] [stderr] 18 | Cell::I3 => Cell::Column(2), Cell::J3 => Cell::Column(6), Cell::K3 => Cell::Column(10), Cell::W3 => Cell::Column(14), [INFO] [stderr] 19 | Cell::I4 => Cell::Column(3), Cell::J4 => Cell::Column(7), Cell::K4 => Cell::Column(14), Cell::W4 => Cell::Column(15), [INFO] [stderr] 20 | Cell::Column(i) => Cell::Column(i), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `start` [INFO] [stderr] --> src/matrices.rs:41:31 [INFO] [stderr] | [INFO] [stderr] 41 | self[Cell::Column(start + 0)], [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `start` [INFO] [stderr] --> src/matrices.rs:51:28 [INFO] [stderr] | [INFO] [stderr] 51 | self[Cell::Row(start + 0)], [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: method `Zero` should have a snake case name such as `zero` [INFO] [stderr] --> src/matrices.rs:138:5 [INFO] [stderr] | [INFO] [stderr] 138 | / pub fn Zero() -> AffineMatrix { [INFO] [stderr] 139 | | AffineMatrix::from_row_major(vec![0.0;16]) [INFO] [stderr] 140 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: method `Identity` should have a snake case name such as `identity` [INFO] [stderr] --> src/matrices.rs:142:5 [INFO] [stderr] | [INFO] [stderr] 142 | / pub fn Identity() -> AffineMatrix { [INFO] [stderr] 143 | | AffineMatrix { [INFO] [stderr] 144 | | i1: 1., j1: 0., k1: 0., w1: 0., [INFO] [stderr] 145 | | i2: 0., j2: 1., k2: 0., w2: 0., [INFO] [stderr] ... | [INFO] [stderr] 148 | | } [INFO] [stderr] 149 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `Translation` should have a snake case name such as `translation` [INFO] [stderr] --> src/matrices.rs:151:5 [INFO] [stderr] | [INFO] [stderr] 151 | / pub fn Translation(x : f64, y : f64, z : f64) -> AffineMatrix { [INFO] [stderr] 152 | | AffineMatrix { [INFO] [stderr] 153 | | i1: 1., j1: 0., k1: 0., w1: x , [INFO] [stderr] 154 | | i2: 0., j2: 1., k2: 0., w2: y , [INFO] [stderr] ... | [INFO] [stderr] 157 | | } [INFO] [stderr] 158 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `RotationX` should have a snake case name such as `rotation_x` [INFO] [stderr] --> src/matrices.rs:160:5 [INFO] [stderr] | [INFO] [stderr] 160 | / pub fn RotationX(theta : f64) -> AffineMatrix { [INFO] [stderr] 161 | | let c = theta.cos(); [INFO] [stderr] 162 | | let s = theta.sin(); [INFO] [stderr] 163 | | AffineMatrix { [INFO] [stderr] ... | [INFO] [stderr] 168 | | } [INFO] [stderr] 169 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `RotationY` should have a snake case name such as `rotation_y` [INFO] [stderr] --> src/matrices.rs:171:5 [INFO] [stderr] | [INFO] [stderr] 171 | / pub fn RotationY(theta : f64) -> AffineMatrix { [INFO] [stderr] 172 | | let c = theta.cos(); [INFO] [stderr] 173 | | let s = theta.sin(); [INFO] [stderr] 174 | | AffineMatrix { [INFO] [stderr] ... | [INFO] [stderr] 179 | | } [INFO] [stderr] 180 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `RotationZ` should have a snake case name such as `rotation_z` [INFO] [stderr] --> src/matrices.rs:182:5 [INFO] [stderr] | [INFO] [stderr] 182 | / pub fn RotationZ(theta : f64) -> AffineMatrix { [INFO] [stderr] 183 | | let c = theta.cos(); [INFO] [stderr] 184 | | let s = theta.sin(); [INFO] [stderr] 185 | | AffineMatrix { [INFO] [stderr] ... | [INFO] [stderr] 190 | | } [INFO] [stderr] 191 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `Scale` should have a snake case name such as `scale` [INFO] [stderr] --> src/matrices.rs:193:5 [INFO] [stderr] | [INFO] [stderr] 193 | / pub fn Scale(x : f64, y : f64, z : f64) -> AffineMatrix { [INFO] [stderr] 194 | | AffineMatrix { [INFO] [stderr] 195 | | i1: x , j1: 0., k1: 0., w1: 0., [INFO] [stderr] 196 | | i2: 0., j2: y , k2: 0., w2: 0., [INFO] [stderr] ... | [INFO] [stderr] 199 | | } [INFO] [stderr] 200 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `UniformScale` should have a snake case name such as `uniform_scale` [INFO] [stderr] --> src/matrices.rs:202:5 [INFO] [stderr] | [INFO] [stderr] 202 | / pub fn UniformScale(s : f64) -> AffineMatrix { [INFO] [stderr] 203 | | AffineMatrix { [INFO] [stderr] 204 | | i1: s , j1: 0., k1: 0., w1: 0., [INFO] [stderr] 205 | | i2: 0., j2: s , k2: 0., w2: 0., [INFO] [stderr] ... | [INFO] [stderr] 208 | | } [INFO] [stderr] 209 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/unit_tests/vector_op_tests.rs:52:26 [INFO] [stderr] | [INFO] [stderr] 52 | assert_eq!(dif < 0.0000001, true); [INFO] [stderr] | ^^^^^^^^^ help: consider: `0.000_000_1` [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/unit_tests/matrix_op_tests.rs:9:21 [INFO] [stderr] | [INFO] [stderr] 9 | const C : f64 = 0.5403023058681398; // cos(1) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0.540_302_305_868_139_8` [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/unit_tests/matrix_op_tests.rs:10:21 [INFO] [stderr] | [INFO] [stderr] 10 | const S : f64 = 0.8414709848078965; // sin(1) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0.841_470_984_807_896_5` [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/unit_tests/matrix_op_tests.rs:12:29 [INFO] [stderr] | [INFO] [stderr] 12 | const TOLERANCE : f64 = 0.0000000000000000001; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider: `0.000_000_000_000_000_000_1` [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/vectors.rs:28:21 [INFO] [stderr] | [INFO] [stderr] 28 | Vector { x: x as f64, y: y as f64, z: z as f64 } [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(x)` [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/vectors.rs:28:34 [INFO] [stderr] | [INFO] [stderr] 28 | Vector { x: x as f64, y: y as f64, z: z as f64 } [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: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/vectors.rs:28:47 [INFO] [stderr] | [INFO] [stderr] 28 | Vector { x: x as f64, y: y as f64, z: z as f64 } [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(z)` [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 don't need to add `&` to all patterns [INFO] [stderr] --> src/matrices.rs:15:9 [INFO] [stderr] | [INFO] [stderr] 15 | / match self { [INFO] [stderr] 16 | | &Cell::I1 => Cell::Column(0), &Cell::J1 => Cell::Column(4), &Cell::K1 => Cell::Column(8), &Cell::W1 => Cell::Column(12), [INFO] [stderr] 17 | | &Cell::I2 => Cell::Column(1), &Cell::J2 => Cell::Column(5), &Cell::K2 => Cell::Column(9), &Cell::W2 => Cell::Column(13), [INFO] [stderr] 18 | | &Cell::I3 => Cell::Column(2), &Cell::J3 => Cell::Column(6), &Cell::K3 => Cell::Column(10), &Cell::W3 => Cell::Column(14), [INFO] [stderr] ... | [INFO] [stderr] 21 | | &Cell::Row(i) => Cell::Column((i * 4 % 16) + (i / 4)) [INFO] [stderr] 22 | | } [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] 15 | match *self { [INFO] [stderr] 16 | Cell::I1 => Cell::Column(0), Cell::J1 => Cell::Column(4), Cell::K1 => Cell::Column(8), Cell::W1 => Cell::Column(12), [INFO] [stderr] 17 | Cell::I2 => Cell::Column(1), Cell::J2 => Cell::Column(5), Cell::K2 => Cell::Column(9), Cell::W2 => Cell::Column(13), [INFO] [stderr] 18 | Cell::I3 => Cell::Column(2), Cell::J3 => Cell::Column(6), Cell::K3 => Cell::Column(10), Cell::W3 => Cell::Column(14), [INFO] [stderr] 19 | Cell::I4 => Cell::Column(3), Cell::J4 => Cell::Column(7), Cell::K4 => Cell::Column(14), Cell::W4 => Cell::Column(15), [INFO] [stderr] 20 | Cell::Column(i) => Cell::Column(i), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `start` [INFO] [stderr] --> src/matrices.rs:41:31 [INFO] [stderr] | [INFO] [stderr] 41 | self[Cell::Column(start + 0)], [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `start` [INFO] [stderr] --> src/matrices.rs:51:28 [INFO] [stderr] | [INFO] [stderr] 51 | self[Cell::Row(start + 0)], [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: method `Zero` should have a snake case name such as `zero` [INFO] [stderr] --> src/matrices.rs:138:5 [INFO] [stderr] | [INFO] [stderr] 138 | / pub fn Zero() -> AffineMatrix { [INFO] [stderr] 139 | | AffineMatrix::from_row_major(vec![0.0;16]) [INFO] [stderr] 140 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: method `Identity` should have a snake case name such as `identity` [INFO] [stderr] --> src/matrices.rs:142:5 [INFO] [stderr] | [INFO] [stderr] 142 | / pub fn Identity() -> AffineMatrix { [INFO] [stderr] 143 | | AffineMatrix { [INFO] [stderr] 144 | | i1: 1., j1: 0., k1: 0., w1: 0., [INFO] [stderr] 145 | | i2: 0., j2: 1., k2: 0., w2: 0., [INFO] [stderr] ... | [INFO] [stderr] 148 | | } [INFO] [stderr] 149 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `Translation` should have a snake case name such as `translation` [INFO] [stderr] --> src/matrices.rs:151:5 [INFO] [stderr] | [INFO] [stderr] 151 | / pub fn Translation(x : f64, y : f64, z : f64) -> AffineMatrix { [INFO] [stderr] 152 | | AffineMatrix { [INFO] [stderr] 153 | | i1: 1., j1: 0., k1: 0., w1: x , [INFO] [stderr] 154 | | i2: 0., j2: 1., k2: 0., w2: y , [INFO] [stderr] ... | [INFO] [stderr] 157 | | } [INFO] [stderr] 158 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `RotationX` should have a snake case name such as `rotation_x` [INFO] [stderr] --> src/matrices.rs:160:5 [INFO] [stderr] | [INFO] [stderr] 160 | / pub fn RotationX(theta : f64) -> AffineMatrix { [INFO] [stderr] 161 | | let c = theta.cos(); [INFO] [stderr] 162 | | let s = theta.sin(); [INFO] [stderr] 163 | | AffineMatrix { [INFO] [stderr] ... | [INFO] [stderr] 168 | | } [INFO] [stderr] 169 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `RotationY` should have a snake case name such as `rotation_y` [INFO] [stderr] --> src/matrices.rs:171:5 [INFO] [stderr] | [INFO] [stderr] 171 | / pub fn RotationY(theta : f64) -> AffineMatrix { [INFO] [stderr] 172 | | let c = theta.cos(); [INFO] [stderr] 173 | | let s = theta.sin(); [INFO] [stderr] 174 | | AffineMatrix { [INFO] [stderr] ... | [INFO] [stderr] 179 | | } [INFO] [stderr] 180 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `RotationZ` should have a snake case name such as `rotation_z` [INFO] [stderr] --> src/matrices.rs:182:5 [INFO] [stderr] | [INFO] [stderr] 182 | / pub fn RotationZ(theta : f64) -> AffineMatrix { [INFO] [stderr] 183 | | let c = theta.cos(); [INFO] [stderr] 184 | | let s = theta.sin(); [INFO] [stderr] 185 | | AffineMatrix { [INFO] [stderr] ... | [INFO] [stderr] 190 | | } [INFO] [stderr] 191 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `Scale` should have a snake case name such as `scale` [INFO] [stderr] --> src/matrices.rs:193:5 [INFO] [stderr] | [INFO] [stderr] 193 | / pub fn Scale(x : f64, y : f64, z : f64) -> AffineMatrix { [INFO] [stderr] 194 | | AffineMatrix { [INFO] [stderr] 195 | | i1: x , j1: 0., k1: 0., w1: 0., [INFO] [stderr] 196 | | i2: 0., j2: y , k2: 0., w2: 0., [INFO] [stderr] ... | [INFO] [stderr] 199 | | } [INFO] [stderr] 200 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `UniformScale` should have a snake case name such as `uniform_scale` [INFO] [stderr] --> src/matrices.rs:202:5 [INFO] [stderr] | [INFO] [stderr] 202 | / pub fn UniformScale(s : f64) -> AffineMatrix { [INFO] [stderr] 203 | | AffineMatrix { [INFO] [stderr] 204 | | i1: s , j1: 0., k1: 0., w1: 0., [INFO] [stderr] 205 | | i2: 0., j2: s , k2: 0., w2: 0., [INFO] [stderr] ... | [INFO] [stderr] 208 | | } [INFO] [stderr] 209 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/unit_tests/vector_op_tests.rs:9:9 [INFO] [stderr] | [INFO] [stderr] 9 | assert_eq!(1., mag_squared); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [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/unit_tests/vector_op_tests.rs:9:9 [INFO] [stderr] | [INFO] [stderr] 9 | assert_eq!(1., mag_squared); [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/unit_tests/vector_op_tests.rs:16:9 [INFO] [stderr] | [INFO] [stderr] 16 | assert_eq!(25., mag_squared); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/unit_tests/vector_op_tests.rs:16:9 [INFO] [stderr] | [INFO] [stderr] 16 | assert_eq!(25., mag_squared); [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/unit_tests/vector_op_tests.rs:23:9 [INFO] [stderr] | [INFO] [stderr] 23 | assert_eq!(5., mag); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/unit_tests/vector_op_tests.rs:23:9 [INFO] [stderr] | [INFO] [stderr] 23 | assert_eq!(5., mag); [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/unit_tests/vector_op_tests.rs:65:9 [INFO] [stderr] | [INFO] [stderr] 65 | assert_eq!(triangle.x() * 2., big.x()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/unit_tests/vector_op_tests.rs:65:9 [INFO] [stderr] | [INFO] [stderr] 65 | assert_eq!(triangle.x() * 2., big.x()); [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/unit_tests/vector_op_tests.rs:66:9 [INFO] [stderr] | [INFO] [stderr] 66 | assert_eq!(triangle.y() * 2., big.y()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/unit_tests/vector_op_tests.rs:66:9 [INFO] [stderr] | [INFO] [stderr] 66 | assert_eq!(triangle.y() * 2., big.y()); [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/unit_tests/vector_op_tests.rs:67:9 [INFO] [stderr] | [INFO] [stderr] 67 | assert_eq!(triangle.z() * 2., big.z()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/unit_tests/vector_op_tests.rs:67:9 [INFO] [stderr] | [INFO] [stderr] 67 | assert_eq!(triangle.z() * 2., big.z()); [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/unit_tests/matrix_index_tests.rs:12:13 [INFO] [stderr] | [INFO] [stderr] 12 | assert_eq!(matrix[Cell::Row(i)], 1.); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/unit_tests/matrix_index_tests.rs:12:13 [INFO] [stderr] | [INFO] [stderr] 12 | assert_eq!(matrix[Cell::Row(i)], 1.); [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/unit_tests/matrix_index_tests.rs:14:9 [INFO] [stderr] | [INFO] [stderr] 14 | assert_eq!(matrix[Cell::Row(14)], 0.); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/unit_tests/matrix_index_tests.rs:14:9 [INFO] [stderr] | [INFO] [stderr] 14 | assert_eq!(matrix[Cell::Row(14)], 0.); [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/unit_tests/matrix_index_tests.rs:15:9 [INFO] [stderr] | [INFO] [stderr] 15 | assert_eq!(matrix[Cell::Row(15)], 2.); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/unit_tests/matrix_index_tests.rs:15:9 [INFO] [stderr] | [INFO] [stderr] 15 | assert_eq!(matrix[Cell::Row(15)], 2.); [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] warning: casting u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/unit_tests/matrix_index_tests.rs:27:46 [INFO] [stderr] | [INFO] [stderr] 27 | assert_eq!(matrix[Cell::Row(i)], (i + 1) as f64); // values increment along row major order [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f64::from(i + 1)` [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/unit_tests/matrix_index_tests.rs:27:13 [INFO] [stderr] | [INFO] [stderr] 27 | assert_eq!(matrix[Cell::Row(i)], (i + 1) as f64); // values increment along row major order [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/unit_tests/matrix_index_tests.rs:27:13 [INFO] [stderr] | [INFO] [stderr] 27 | assert_eq!(matrix[Cell::Row(i)], (i + 1) as f64); // values increment along row major order [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] warning: casting u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/unit_tests/matrix_index_tests.rs:28:49 [INFO] [stderr] | [INFO] [stderr] 28 | assert_eq!(matrix[Cell::Column(i)], ((i * 4 % 16) + (i / 4) + 1) as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from((i * 4 % 16) + (i / 4) + 1)` [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/unit_tests/matrix_index_tests.rs:28:13 [INFO] [stderr] | [INFO] [stderr] 28 | assert_eq!(matrix[Cell::Column(i)], ((i * 4 % 16) + (i / 4) + 1) as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/unit_tests/matrix_index_tests.rs:28:13 [INFO] [stderr] | [INFO] [stderr] 28 | assert_eq!(matrix[Cell::Column(i)], ((i * 4 % 16) + (i / 4) + 1) as f64); [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/unit_tests/matrix_index_tests.rs:39:13 [INFO] [stderr] | [INFO] [stderr] 39 | assert_eq!(matrix[Cell::Column(i)], 1.); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/unit_tests/matrix_index_tests.rs:39:13 [INFO] [stderr] | [INFO] [stderr] 39 | assert_eq!(matrix[Cell::Column(i)], 1.); [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/unit_tests/matrix_index_tests.rs:41:9 [INFO] [stderr] | [INFO] [stderr] 41 | assert_eq!(matrix[Cell::Column(14)], 0.); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/unit_tests/matrix_index_tests.rs:41:9 [INFO] [stderr] | [INFO] [stderr] 41 | assert_eq!(matrix[Cell::Column(14)], 0.); [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/unit_tests/matrix_index_tests.rs:42:9 [INFO] [stderr] | [INFO] [stderr] 42 | assert_eq!(matrix[Cell::Column(15)], 2.); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/unit_tests/matrix_index_tests.rs:42:9 [INFO] [stderr] | [INFO] [stderr] 42 | assert_eq!(matrix[Cell::Column(15)], 2.); [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] warning: casting u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/unit_tests/matrix_index_tests.rs:54:49 [INFO] [stderr] | [INFO] [stderr] 54 | assert_eq!(matrix[Cell::Column(i)], (i + 1) as f64); // values increment along column major order [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f64::from(i + 1)` [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/unit_tests/matrix_index_tests.rs:54:13 [INFO] [stderr] | [INFO] [stderr] 54 | assert_eq!(matrix[Cell::Column(i)], (i + 1) as f64); // values increment along column major order [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/unit_tests/matrix_index_tests.rs:54:13 [INFO] [stderr] | [INFO] [stderr] 54 | assert_eq!(matrix[Cell::Column(i)], (i + 1) as f64); // values increment along column major order [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] warning: casting u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/unit_tests/matrix_index_tests.rs:55:46 [INFO] [stderr] | [INFO] [stderr] 55 | assert_eq!(matrix[Cell::Row(i)], ((i * 4 % 16) + (i / 4) + 1) as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from((i * 4 % 16) + (i / 4) + 1)` [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/unit_tests/matrix_index_tests.rs:55:13 [INFO] [stderr] | [INFO] [stderr] 55 | assert_eq!(matrix[Cell::Row(i)], ((i * 4 % 16) + (i / 4) + 1) as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/unit_tests/matrix_index_tests.rs:55:13 [INFO] [stderr] | [INFO] [stderr] 55 | assert_eq!(matrix[Cell::Row(i)], ((i * 4 % 16) + (i / 4) + 1) as f64); [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] warning: The use of negated comparison operators on partially ordered types produces code that is hard to read and refactor. Please consider using the `partial_cmp` method instead, to make it clear that the two values could be incomparable. [INFO] [stderr] --> src/unit_tests/matrix_op_tests.rs:19:24 [INFO] [stderr] | [INFO] [stderr] 19 | if ! ( (* left_val - * right_val).magnitude_squared() < TOLERANCE ) { panic!("assertion failed: `(left == right)` (left: `{:?}`, right: `{:?}`)", * left_val , * right_val ) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 61 | assert_aprox!(rotated, expected); [INFO] [stderr] | --------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::neg_cmp_op_on_partial_ord)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_cmp_op_on_partial_ord [INFO] [stderr] [INFO] [stderr] warning: The use of negated comparison operators on partially ordered types produces code that is hard to read and refactor. Please consider using the `partial_cmp` method instead, to make it clear that the two values could be incomparable. [INFO] [stderr] --> src/unit_tests/matrix_op_tests.rs:19:24 [INFO] [stderr] | [INFO] [stderr] 19 | if ! ( (* left_val - * right_val).magnitude_squared() < TOLERANCE ) { panic!("assertion failed: `(left == right)` (left: `{:?}`, right: `{:?}`)", * left_val , * right_val ) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 68 | assert_aprox!(returned, i); [INFO] [stderr] | --------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_cmp_op_on_partial_ord [INFO] [stderr] [INFO] [stderr] warning: The use of negated comparison operators on partially ordered types produces code that is hard to read and refactor. Please consider using the `partial_cmp` method instead, to make it clear that the two values could be incomparable. [INFO] [stderr] --> src/unit_tests/matrix_op_tests.rs:19:24 [INFO] [stderr] | [INFO] [stderr] 19 | if ! ( (* left_val - * right_val).magnitude_squared() < TOLERANCE ) { panic!("assertion failed: `(left == right)` (left: `{:?}`, right: `{:?}`)", * left_val , * right_val ) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 132 | assert_aprox!(should_be_j, Vector::j_hat()); [INFO] [stderr] | -------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_cmp_op_on_partial_ord [INFO] [stderr] [INFO] [stderr] warning: The use of negated comparison operators on partially ordered types produces code that is hard to read and refactor. Please consider using the `partial_cmp` method instead, to make it clear that the two values could be incomparable. [INFO] [stderr] --> src/unit_tests/matrix_op_tests.rs:19:24 [INFO] [stderr] | [INFO] [stderr] 19 | if ! ( (* left_val - * right_val).magnitude_squared() < TOLERANCE ) { panic!("assertion failed: `(left == right)` (left: `{:?}`, right: `{:?}`)", * left_val , * right_val ) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 144 | assert_aprox!(should_be_2j, Vector::j_hat() * 2.0); [INFO] [stderr] | --------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_cmp_op_on_partial_ord [INFO] [stderr] [INFO] [stderr] error: aborting due to 16 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `affine_transforms`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "a86c08a69fe93b9fe32867c0592a3ec7c3cff862dea2685d69e04c9a4c20f3ab"` [INFO] running `"docker" "rm" "-f" "a86c08a69fe93b9fe32867c0592a3ec7c3cff862dea2685d69e04c9a4c20f3ab"` [INFO] [stdout] a86c08a69fe93b9fe32867c0592a3ec7c3cff862dea2685d69e04c9a4c20f3ab