[INFO] crate footile 0.2.0 is already in cache [INFO] extracting crate footile 0.2.0 into work/ex/clippy-test-run/sources/stable/reg/footile/0.2.0 [INFO] extracting crate footile 0.2.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/footile/0.2.0 [INFO] validating manifest of footile-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 footile-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 footile-0.2.0 [INFO] finished frobbing footile-0.2.0 [INFO] frobbed toml for footile-0.2.0 written to work/ex/clippy-test-run/sources/stable/reg/footile/0.2.0/Cargo.toml [INFO] started frobbing footile-0.2.0 [INFO] finished frobbing footile-0.2.0 [INFO] frobbed toml for footile-0.2.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/footile/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 footile-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-0/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/footile/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] 72047c54a85b652c344563ff1c3e28acff501d0950e6d842bbc015f06991bbaa [INFO] running `"docker" "start" "-a" "72047c54a85b652c344563ff1c3e28acff501d0950e6d842bbc015f06991bbaa"` [INFO] [stderr] Checking png v0.10.0 [INFO] [stderr] Checking footile v0.2.0 (/opt/crater/workdir) [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/imgbuf.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | let b = _mm_packus_epi16(v, v); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/geom.rs:94:16 [INFO] [stderr] | [INFO] [stderr] 94 | Vec2 { 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/geom.rs:94:22 [INFO] [stderr] | [INFO] [stderr] 94 | Vec2 { 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/geom.rs:210:13 [INFO] [stderr] | [INFO] [stderr] 210 | 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/fig.rs:88:13 [INFO] [stderr] | [INFO] [stderr] 88 | start : start, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `start` [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/fig.rs:131:13 [INFO] [stderr] | [INFO] [stderr] 131 | v1 : v1, [INFO] [stderr] | ^^^^^^^^^^^^^ help: replace it with: `v1` [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/fig.rs:132:13 [INFO] [stderr] | [INFO] [stderr] 132 | y0f : y0f, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `y0f` [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/fig.rs:133:13 [INFO] [stderr] | [INFO] [stderr] 133 | y1f : y1f, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `y1f` [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/fig.rs:134:13 [INFO] [stderr] | [INFO] [stderr] 134 | dir : dir, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `dir` [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/fig.rs:135:13 [INFO] [stderr] | [INFO] [stderr] 135 | step_pix : step_pix, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `step_pix` [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/fig.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | islope : islope, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `islope` [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/fig.rs:137:13 [INFO] [stderr] | [INFO] [stderr] 137 | x_bot : x_bot, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `x_bot` [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/fig.rs:428:13 [INFO] [stderr] | [INFO] [stderr] 428 | fig : fig, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `fig` [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/fig.rs:429:13 [INFO] [stderr] | [INFO] [stderr] 429 | mask : mask, [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: replace it with: `mask` [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/fig.rs:430:13 [INFO] [stderr] | [INFO] [stderr] 430 | sgn_area : sgn_area, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `sgn_area` [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/fig.rs:431:13 [INFO] [stderr] | [INFO] [stderr] 431 | edges : edges, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `edges` [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/fig.rs:432:13 [INFO] [stderr] | [INFO] [stderr] 432 | dir : dir, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `dir` [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/fig.rs:433:13 [INFO] [stderr] | [INFO] [stderr] 433 | rule : rule, [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: replace it with: `rule` [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/fig.rs:436:13 [INFO] [stderr] | [INFO] [stderr] 436 | y_bot : y_bot, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `y_bot` [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/plotter.rs:86:13 [INFO] [stderr] | [INFO] [stderr] 86 | sgn_area : sgn_area, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sgn_area` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/plotter.rs:281:13 [INFO] [stderr] | [INFO] [stderr] 281 | let e = ab_bc.midpoint(bc_cd); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/stroker.rs:50:13 [INFO] [stderr] | [INFO] [stderr] 50 | start : start, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `start` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/imgbuf.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | let b = _mm_packus_epi16(v, v); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/geom.rs:94:16 [INFO] [stderr] | [INFO] [stderr] 94 | Vec2 { 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/geom.rs:94:22 [INFO] [stderr] | [INFO] [stderr] 94 | Vec2 { 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/geom.rs:210:13 [INFO] [stderr] | [INFO] [stderr] 210 | 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/fig.rs:88:13 [INFO] [stderr] | [INFO] [stderr] 88 | start : start, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `start` [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/fig.rs:131:13 [INFO] [stderr] | [INFO] [stderr] 131 | v1 : v1, [INFO] [stderr] | ^^^^^^^^^^^^^ help: replace it with: `v1` [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/fig.rs:132:13 [INFO] [stderr] | [INFO] [stderr] 132 | y0f : y0f, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `y0f` [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/fig.rs:133:13 [INFO] [stderr] | [INFO] [stderr] 133 | y1f : y1f, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `y1f` [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/fig.rs:134:13 [INFO] [stderr] | [INFO] [stderr] 134 | dir : dir, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `dir` [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/fig.rs:135:13 [INFO] [stderr] | [INFO] [stderr] 135 | step_pix : step_pix, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `step_pix` [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/fig.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | islope : islope, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `islope` [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/fig.rs:137:13 [INFO] [stderr] | [INFO] [stderr] 137 | x_bot : x_bot, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `x_bot` [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/fig.rs:428:13 [INFO] [stderr] | [INFO] [stderr] 428 | fig : fig, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `fig` [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/fig.rs:429:13 [INFO] [stderr] | [INFO] [stderr] 429 | mask : mask, [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: replace it with: `mask` [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/fig.rs:430:13 [INFO] [stderr] | [INFO] [stderr] 430 | sgn_area : sgn_area, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `sgn_area` [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/fig.rs:431:13 [INFO] [stderr] | [INFO] [stderr] 431 | edges : edges, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `edges` [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/fig.rs:432:13 [INFO] [stderr] | [INFO] [stderr] 432 | dir : dir, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `dir` [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/fig.rs:433:13 [INFO] [stderr] | [INFO] [stderr] 433 | rule : rule, [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: replace it with: `rule` [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/fig.rs:436:13 [INFO] [stderr] | [INFO] [stderr] 436 | y_bot : y_bot, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `y_bot` [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/plotter.rs:86:13 [INFO] [stderr] | [INFO] [stderr] 86 | sgn_area : sgn_area, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sgn_area` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/plotter.rs:281:13 [INFO] [stderr] | [INFO] [stderr] 281 | let e = ab_bc.midpoint(bc_cd); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/stroker.rs:50:13 [INFO] [stderr] | [INFO] [stderr] 50 | start : start, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `start` [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: operator precedence can trip the unwary [INFO] [stderr] --> src/fixed.rs:170:17 [INFO] [stderr] | [INFO] [stderr] 170 | let v = self.v + other.v >> 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider parenthesizing your expression: `(self.v + other.v) >> 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::precedence)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#precedence [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/geom.rs:376:44 [INFO] [stderr] | [INFO] [stderr] 376 | assert!(a.normalize() == Vec2::new(0.8944272, 0.4472136)); [INFO] [stderr] | ^^^^^^^^^ help: consider: `0.894_427_2` [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/geom.rs:376:55 [INFO] [stderr] | [INFO] [stderr] 376 | assert!(a.normalize() == Vec2::new(0.8944272, 0.4472136)); [INFO] [stderr] | ^^^^^^^^^ help: consider: `0.447_213_6` [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/geom.rs:385:36 [INFO] [stderr] | [INFO] [stderr] 385 | assert!(a.angle_rel(b) == -0.4636476); [INFO] [stderr] | ^^^^^^^^^ help: consider: `0.463_647_6` [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/geom.rs:386:53 [INFO] [stderr] | [INFO] [stderr] 386 | assert!(c.angle_rel(Vec2::new(1.0, 1.0)) == 1.5707963); [INFO] [stderr] | ^^^^^^^^^ help: consider: `1.570_796_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/geom.rs:387:55 [INFO] [stderr] | [INFO] [stderr] 387 | assert!(Vec2::new(-1.0, -1.0).angle_rel(c) == 1.5707965); [INFO] [stderr] | ^^^^^^^^^ help: consider: `1.570_796_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: operator precedence can trip the unwary [INFO] [stderr] --> src/fixed.rs:170:17 [INFO] [stderr] | [INFO] [stderr] 170 | let v = self.v + other.v >> 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider parenthesizing your expression: `(self.v + other.v) >> 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::precedence)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#precedence [INFO] [stderr] [INFO] [stderr] error: casting from `*mut u8` to a more-strictly-aligned pointer (`*mut std::arch::x86_64::__m128i`) [INFO] [stderr] --> src/imgbuf.rs:53:17 [INFO] [stderr] | [INFO] [stderr] 53 | let d = dst.offset(off) as *mut __m128i; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::cast_ptr_alignment)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [INFO] [stderr] [INFO] [stderr] error: casting from `*mut i16` to a more-strictly-aligned pointer (`*mut std::arch::x86_64::__m128i`) [INFO] [stderr] --> src/imgbuf.rs:54:17 [INFO] [stderr] | [INFO] [stderr] 54 | let s = src.offset(off) as *mut __m128i; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [INFO] [stderr] [INFO] [stderr] error: casting from `*mut u8` to a more-strictly-aligned pointer (`*mut std::arch::x86_64::__m128i`) [INFO] [stderr] --> src/imgbuf.rs:121:17 [INFO] [stderr] | [INFO] [stderr] 121 | let d = d.as_mut_ptr() as *mut __m128i; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [INFO] [stderr] [INFO] [stderr] error: casting from `*mut i16` to a more-strictly-aligned pointer (`*mut std::arch::x86_64::__m128i`) [INFO] [stderr] --> src/imgbuf.rs:122:17 [INFO] [stderr] | [INFO] [stderr] 122 | let s = s.as_mut_ptr() as *mut __m128i; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [INFO] [stderr] [INFO] [stderr] warning: the loop variable `r` is used to index `m` [INFO] [stderr] --> src/geom.rs:226:22 [INFO] [stderr] | [INFO] [stderr] 226 | for r in 0..3 { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 226 | for (r, ) in m.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `r` is used to index `m` [INFO] [stderr] --> src/geom.rs:231:22 [INFO] [stderr] | [INFO] [stderr] 231 | for r in 0..3 { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 231 | for (r, ) in m.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `geom::Transform` [INFO] [stderr] --> src/geom.rs:267:5 [INFO] [stderr] | [INFO] [stderr] 267 | / pub fn new() -> Self { [INFO] [stderr] 268 | | Transform { [INFO] [stderr] 269 | | e: [1.0, 0.0, 0.0, [INFO] [stderr] 270 | | 0.0, 1.0, 0.0, [INFO] [stderr] 271 | | 0.0, 0.0, 1.0] [INFO] [stderr] 272 | | } [INFO] [stderr] 273 | | } [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] 38 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/gray8.rs:31:17 [INFO] [stderr] | [INFO] [stderr] 31 | let v = self.value() as i32 - bot.value() as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.value())` [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 u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/gray8.rs:31:39 [INFO] [stderr] | [INFO] [stderr] 31 | let v = self.value() as i32 - bot.value() as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(bot.value())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/gray8.rs:32:22 [INFO] [stderr] | [INFO] [stderr] 32 | let value = (bot.value() as i32 + scale_i32(v, alpha)) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(bot.value())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/gray8.rs:39:17 [INFO] [stderr] | [INFO] [stderr] 39 | let c = a * b as i32; [INFO] [stderr] | ^^^^^^^^ help: try: `i32::from(b)` [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: use of `offset` with a `usize` casted to an `isize` [INFO] [stderr] --> src/mask.rs:70:23 [INFO] [stderr] | [INFO] [stderr] 70 | let pix = self.pixels.as_mut_ptr().offset(x as isize); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.pixels.as_mut_ptr().add(x)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_offset_with_cast)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/mask.rs:110:13 [INFO] [stderr] | [INFO] [stderr] 110 | let ref mut bw = io::BufWriter::new(fl); [INFO] [stderr] | ----^^^^^^^^^^-------------------------- help: try: `let bw = &mut io::BufWriter::new(fl);` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/fig.rs:379:12 [INFO] [stderr] | [INFO] [stderr] 379 | if self.points.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.points.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/fig.rs:443:12 [INFO] [stderr] | [INFO] [stderr] 443 | if self.edges.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.edges.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: casting i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/fixed.rs:54:23 [INFO] [stderr] | [INFO] [stderr] 54 | let v: i64 = (self.v as i64 * other.v as i64) >> FRACT_BITS; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `i64::from(self.v)` [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 i64 may become silently lossy if types change [INFO] [stderr] --> src/fixed.rs:54:39 [INFO] [stderr] | [INFO] [stderr] 54 | let v: i64 = (self.v as i64 * other.v as i64) >> FRACT_BITS; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i64::from(other.v)` [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 i64 may become silently lossy if types change [INFO] [stderr] --> src/fixed.rs:63:18 [INFO] [stderr] | [INFO] [stderr] 63 | let v = ((self.v as i64) << (FRACT_BITS as i64)) / other.v as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i64::from(self.v)` [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 i64 may become silently lossy if types change [INFO] [stderr] --> src/fixed.rs:63:37 [INFO] [stderr] | [INFO] [stderr] 63 | let v = ((self.v as i64) << (FRACT_BITS as i64)) / other.v as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(FRACT_BITS)` [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 i64 may become silently lossy if types change [INFO] [stderr] --> src/fixed.rs:63:60 [INFO] [stderr] | [INFO] [stderr] 63 | let v = ((self.v as i64) << (FRACT_BITS as i64)) / other.v as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i64::from(other.v)` [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 deriving a `Default` implementation for `path::PathBuilder` [INFO] [stderr] --> src/path.rs:92:5 [INFO] [stderr] | [INFO] [stderr] 92 | / pub fn new() -> PathBuilder { [INFO] [stderr] 93 | | let ops = Vec::with_capacity(32); [INFO] [stderr] 94 | | PathBuilder { [INFO] [stderr] 95 | | ops, [INFO] [stderr] ... | [INFO] [stderr] 99 | | } [INFO] [stderr] 100 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 54 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/plotter.rs:158:9 [INFO] [stderr] | [INFO] [stderr] 158 | / match op { [INFO] [stderr] 159 | | &PathOp::Close() => self.close(dst), [INFO] [stderr] 160 | | &PathOp::Move(bx, by) => self.move_to(dst, bx, by), [INFO] [stderr] 161 | | &PathOp::Line(bx, by) => self.line_to(dst, bx, by), [INFO] [stderr] ... | [INFO] [stderr] 165 | | &PathOp::PenWidth(w) => self.pen_width(w), [INFO] [stderr] 166 | | }; [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] 158 | match *op { [INFO] [stderr] 159 | PathOp::Close() => self.close(dst), [INFO] [stderr] 160 | PathOp::Move(bx, by) => self.move_to(dst, bx, by), [INFO] [stderr] 161 | PathOp::Line(bx, by) => self.line_to(dst, bx, by), [INFO] [stderr] 162 | PathOp::Quad(bx, by, cx, cy) => self.quad_to(dst, bx,by,cx,cy), [INFO] [stderr] 163 | PathOp::Cubic(bx,by,cx,cy,dx,dy)=> self.cubic_to(dst, bx, by, cx, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/plotter.rs:253:5 [INFO] [stderr] | [INFO] [stderr] 253 | / fn cubic_to(&mut self, dst: &mut D, bx: f32, by: f32, [INFO] [stderr] 254 | | cx: f32, cy: f32, dx: f32, dy:f32) [INFO] [stderr] 255 | | { [INFO] [stderr] 256 | | let pen = self.pen; [INFO] [stderr] ... | [INFO] [stderr] 267 | | self.move_pen(dd); [INFO] [stderr] 268 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/raster.rs:101:13 [INFO] [stderr] | [INFO] [stderr] 101 | let ref mut bw = io::BufWriter::new(fl); [INFO] [stderr] | ----^^^^^^^^^^-------------------------- help: try: `let bw = &mut io::BufWriter::new(fl);` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: The function/method `::as_u8_slice` doesn't need a mutable reference [INFO] [stderr] --> src/raster.rs:105:34 [INFO] [stderr] | [INFO] [stderr] 105 | let pix = F::as_u8_slice(&mut self.pixels); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `(c.red() as i32)` [INFO] [stderr] --> src/rgba8.rs:32:21 [INFO] [stderr] | [INFO] [stderr] 32 | let red = (c.red() as i32) << 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: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:32:21 [INFO] [stderr] | [INFO] [stderr] 32 | let red = (c.red() as i32) << 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(c.red())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:33:21 [INFO] [stderr] | [INFO] [stderr] 33 | let green = (c.green() as i32) << 8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(c.green())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:34:21 [INFO] [stderr] | [INFO] [stderr] 34 | let blue = (c.blue() as i32) << 16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(c.blue())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:35:21 [INFO] [stderr] | [INFO] [stderr] 35 | let alpha = (c.alpha() as i32) << 24; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(c.alpha())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:77:17 [INFO] [stderr] | [INFO] [stderr] 77 | let r = self.red() as i32 - bot.red() as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.red())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:77:39 [INFO] [stderr] | [INFO] [stderr] 77 | let r = self.red() as i32 - bot.red() as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(bot.red())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:78:17 [INFO] [stderr] | [INFO] [stderr] 78 | let g = self.green() as i32 - bot.green() as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.green())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:78:39 [INFO] [stderr] | [INFO] [stderr] 78 | let g = self.green() as i32 - bot.green() as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(bot.green())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:79:17 [INFO] [stderr] | [INFO] [stderr] 79 | let b = self.blue() as i32 - bot.blue() as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.blue())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:79:39 [INFO] [stderr] | [INFO] [stderr] 79 | let b = self.blue() as i32 - bot.blue() as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(bot.blue())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:80:17 [INFO] [stderr] | [INFO] [stderr] 80 | let a = self.alpha() as i32 - bot.alpha() as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.alpha())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:80:39 [INFO] [stderr] | [INFO] [stderr] 80 | let a = self.alpha() as i32 - bot.alpha() as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(bot.alpha())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:81:22 [INFO] [stderr] | [INFO] [stderr] 81 | let red = (bot.red() as i32 + scale_i32(r, alpha)) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(bot.red())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:82:22 [INFO] [stderr] | [INFO] [stderr] 82 | let green = (bot.green() as i32 + scale_i32(g, alpha)) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(bot.green())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:83:22 [INFO] [stderr] | [INFO] [stderr] 83 | let blue = (bot.blue() as i32 + scale_i32(b, alpha)) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(bot.blue())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:84:22 [INFO] [stderr] | [INFO] [stderr] 84 | let alpha = (bot.alpha() as i32 + scale_i32(a, alpha)) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(bot.alpha())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:91:17 [INFO] [stderr] | [INFO] [stderr] 91 | let c = a * b as i32; [INFO] [stderr] | ^^^^^^^^ help: try: `i32::from(b)` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:99:18 [INFO] [stderr] | [INFO] [stderr] 99 | let aa = (a as u32) << 8; [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(a)` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:100:18 [INFO] [stderr] | [INFO] [stderr] 100 | let bb = b as u32; [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(b)` [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: casting from `*mut rgba8::Rgba8` to a more-strictly-aligned pointer (`*mut std::arch::x86_64::__m128i`) [INFO] [stderr] --> src/rgba8.rs:144:19 [INFO] [stderr] | [INFO] [stderr] 144 | let dst = dst.offset(off) as *mut __m128i; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [INFO] [stderr] [INFO] [stderr] error: casting from `*const u8` to a more-strictly-aligned pointer (`*const i32`) [INFO] [stderr] --> src/rgba8.rs:145:19 [INFO] [stderr] | [INFO] [stderr] 145 | let src = src.offset(off) as *const i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/stroker.rs:199:12 [INFO] [stderr] | [INFO] [stderr] 199 | if self.points.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.points.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] error: aborting due to 6 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `footile`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: casting from `*mut u8` to a more-strictly-aligned pointer (`*mut std::arch::x86_64::__m128i`) [INFO] [stderr] --> src/imgbuf.rs:53:17 [INFO] [stderr] | [INFO] [stderr] 53 | let d = dst.offset(off) as *mut __m128i; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::cast_ptr_alignment)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [INFO] [stderr] [INFO] [stderr] error: casting from `*mut i16` to a more-strictly-aligned pointer (`*mut std::arch::x86_64::__m128i`) [INFO] [stderr] --> src/imgbuf.rs:54:17 [INFO] [stderr] | [INFO] [stderr] 54 | let s = src.offset(off) as *mut __m128i; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [INFO] [stderr] [INFO] [stderr] error: casting from `*mut u8` to a more-strictly-aligned pointer (`*mut std::arch::x86_64::__m128i`) [INFO] [stderr] --> src/imgbuf.rs:121:17 [INFO] [stderr] | [INFO] [stderr] 121 | let d = d.as_mut_ptr() as *mut __m128i; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [INFO] [stderr] [INFO] [stderr] error: casting from `*mut i16` to a more-strictly-aligned pointer (`*mut std::arch::x86_64::__m128i`) [INFO] [stderr] --> src/imgbuf.rs:122:17 [INFO] [stderr] | [INFO] [stderr] 122 | let s = s.as_mut_ptr() as *mut __m128i; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [INFO] [stderr] [INFO] [stderr] warning: the loop variable `r` is used to index `m` [INFO] [stderr] --> src/geom.rs:226:22 [INFO] [stderr] | [INFO] [stderr] 226 | for r in 0..3 { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 226 | for (r, ) in m.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `r` is used to index `m` [INFO] [stderr] --> src/geom.rs:231:22 [INFO] [stderr] | [INFO] [stderr] 231 | for r in 0..3 { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 231 | for (r, ) in m.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `geom::Transform` [INFO] [stderr] --> src/geom.rs:267:5 [INFO] [stderr] | [INFO] [stderr] 267 | / pub fn new() -> Self { [INFO] [stderr] 268 | | Transform { [INFO] [stderr] 269 | | e: [1.0, 0.0, 0.0, [INFO] [stderr] 270 | | 0.0, 1.0, 0.0, [INFO] [stderr] 271 | | 0.0, 0.0, 1.0] [INFO] [stderr] 272 | | } [INFO] [stderr] 273 | | } [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] 38 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/geom.rs:375:17 [INFO] [stderr] | [INFO] [stderr] 375 | assert!(b.mag() == 5.0); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider comparing them within some error: `(b.mag() - 5.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/geom.rs:375:17 [INFO] [stderr] | [INFO] [stderr] 375 | assert!(b.mag() == 5.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] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/geom.rs:377:17 [INFO] [stderr] | [INFO] [stderr] 377 | assert!(a.dist_sq(b) == 10.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(a.dist_sq(b) - 10.0).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/geom.rs:377:17 [INFO] [stderr] | [INFO] [stderr] 377 | assert!(a.dist_sq(b) == 10.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] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/geom.rs:378:17 [INFO] [stderr] | [INFO] [stderr] 378 | assert!(b.dist(Vec2::new(0.0, 0.0)) == 5.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(b.dist(Vec2::new(0.0, 0.0)) - 5.0).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/geom.rs:378:17 [INFO] [stderr] | [INFO] [stderr] 378 | assert!(b.dist(Vec2::new(0.0, 0.0)) == 5.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] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/geom.rs:385:17 [INFO] [stderr] | [INFO] [stderr] 385 | assert!(a.angle_rel(b) == -0.4636476); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(a.angle_rel(b) - -0.4636476).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/geom.rs:385:17 [INFO] [stderr] | [INFO] [stderr] 385 | assert!(a.angle_rel(b) == -0.4636476); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/geom.rs:386:17 [INFO] [stderr] | [INFO] [stderr] 386 | assert!(c.angle_rel(Vec2::new(1.0, 1.0)) == 1.5707963); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(c.angle_rel(Vec2::new(1.0, 1.0)) - 1.5707963).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/geom.rs:386:17 [INFO] [stderr] | [INFO] [stderr] 386 | assert!(c.angle_rel(Vec2::new(1.0, 1.0)) == 1.5707963); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::FRAC_PI_2` found. Consider using it directly [INFO] [stderr] --> src/geom.rs:386:53 [INFO] [stderr] | [INFO] [stderr] 386 | assert!(c.angle_rel(Vec2::new(1.0, 1.0)) == 1.5707963); [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: strict comparison of f32 or f64 [INFO] [stderr] --> src/geom.rs:387:17 [INFO] [stderr] | [INFO] [stderr] 387 | assert!(Vec2::new(-1.0, -1.0).angle_rel(c) == 1.5707965); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(Vec2::new(-1.0, -1.0).angle_rel(c) - 1.5707965).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/geom.rs:387:17 [INFO] [stderr] | [INFO] [stderr] 387 | assert!(Vec2::new(-1.0, -1.0).angle_rel(c) == 1.5707965); [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/gray8.rs:31:17 [INFO] [stderr] | [INFO] [stderr] 31 | let v = self.value() as i32 - bot.value() as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.value())` [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 u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/gray8.rs:31:39 [INFO] [stderr] | [INFO] [stderr] 31 | let v = self.value() as i32 - bot.value() as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(bot.value())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/gray8.rs:32:22 [INFO] [stderr] | [INFO] [stderr] 32 | let value = (bot.value() as i32 + scale_i32(v, alpha)) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(bot.value())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/gray8.rs:39:17 [INFO] [stderr] | [INFO] [stderr] 39 | let c = a * b as i32; [INFO] [stderr] | ^^^^^^^^ help: try: `i32::from(b)` [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: use of `offset` with a `usize` casted to an `isize` [INFO] [stderr] --> src/mask.rs:70:23 [INFO] [stderr] | [INFO] [stderr] 70 | let pix = self.pixels.as_mut_ptr().offset(x as isize); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.pixels.as_mut_ptr().add(x)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_offset_with_cast)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/mask.rs:110:13 [INFO] [stderr] | [INFO] [stderr] 110 | let ref mut bw = io::BufWriter::new(fl); [INFO] [stderr] | ----^^^^^^^^^^-------------------------- help: try: `let bw = &mut io::BufWriter::new(fl);` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/fig.rs:379:12 [INFO] [stderr] | [INFO] [stderr] 379 | if self.points.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.points.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/fig.rs:443:12 [INFO] [stderr] | [INFO] [stderr] 443 | if self.edges.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.edges.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: casting i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/fixed.rs:54:23 [INFO] [stderr] | [INFO] [stderr] 54 | let v: i64 = (self.v as i64 * other.v as i64) >> FRACT_BITS; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `i64::from(self.v)` [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 i64 may become silently lossy if types change [INFO] [stderr] --> src/fixed.rs:54:39 [INFO] [stderr] | [INFO] [stderr] 54 | let v: i64 = (self.v as i64 * other.v as i64) >> FRACT_BITS; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i64::from(other.v)` [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 i64 may become silently lossy if types change [INFO] [stderr] --> src/fixed.rs:63:18 [INFO] [stderr] | [INFO] [stderr] 63 | let v = ((self.v as i64) << (FRACT_BITS as i64)) / other.v as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i64::from(self.v)` [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 i64 may become silently lossy if types change [INFO] [stderr] --> src/fixed.rs:63:37 [INFO] [stderr] | [INFO] [stderr] 63 | let v = ((self.v as i64) << (FRACT_BITS as i64)) / other.v as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(FRACT_BITS)` [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 i64 may become silently lossy if types change [INFO] [stderr] --> src/fixed.rs:63:60 [INFO] [stderr] | [INFO] [stderr] 63 | let v = ((self.v as i64) << (FRACT_BITS as i64)) / other.v as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i64::from(other.v)` [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/fixed.rs:301:17 [INFO] [stderr] | [INFO] [stderr] 301 | assert!(f == 2.5); [INFO] [stderr] | ^^^^^^^^ help: consider comparing them within some error: `(f - 2.5).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/fixed.rs:301:17 [INFO] [stderr] | [INFO] [stderr] 301 | assert!(f == 2.5); [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: you should consider deriving a `Default` implementation for `path::PathBuilder` [INFO] [stderr] --> src/path.rs:92:5 [INFO] [stderr] | [INFO] [stderr] 92 | / pub fn new() -> PathBuilder { [INFO] [stderr] 93 | | let ops = Vec::with_capacity(32); [INFO] [stderr] 94 | | PathBuilder { [INFO] [stderr] 95 | | ops, [INFO] [stderr] ... | [INFO] [stderr] 99 | | } [INFO] [stderr] 100 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 54 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/plotter.rs:158:9 [INFO] [stderr] | [INFO] [stderr] 158 | / match op { [INFO] [stderr] 159 | | &PathOp::Close() => self.close(dst), [INFO] [stderr] 160 | | &PathOp::Move(bx, by) => self.move_to(dst, bx, by), [INFO] [stderr] 161 | | &PathOp::Line(bx, by) => self.line_to(dst, bx, by), [INFO] [stderr] ... | [INFO] [stderr] 165 | | &PathOp::PenWidth(w) => self.pen_width(w), [INFO] [stderr] 166 | | }; [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] 158 | match *op { [INFO] [stderr] 159 | PathOp::Close() => self.close(dst), [INFO] [stderr] 160 | PathOp::Move(bx, by) => self.move_to(dst, bx, by), [INFO] [stderr] 161 | PathOp::Line(bx, by) => self.line_to(dst, bx, by), [INFO] [stderr] 162 | PathOp::Quad(bx, by, cx, cy) => self.quad_to(dst, bx,by,cx,cy), [INFO] [stderr] 163 | PathOp::Cubic(bx,by,cx,cy,dx,dy)=> self.cubic_to(dst, bx, by, cx, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/plotter.rs:253:5 [INFO] [stderr] | [INFO] [stderr] 253 | / fn cubic_to(&mut self, dst: &mut D, bx: f32, by: f32, [INFO] [stderr] 254 | | cx: f32, cy: f32, dx: f32, dy:f32) [INFO] [stderr] 255 | | { [INFO] [stderr] 256 | | let pen = self.pen; [INFO] [stderr] ... | [INFO] [stderr] 267 | | self.move_pen(dd); [INFO] [stderr] 268 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/raster.rs:101:13 [INFO] [stderr] | [INFO] [stderr] 101 | let ref mut bw = io::BufWriter::new(fl); [INFO] [stderr] | ----^^^^^^^^^^-------------------------- help: try: `let bw = &mut io::BufWriter::new(fl);` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: The function/method `::as_u8_slice` doesn't need a mutable reference [INFO] [stderr] --> src/raster.rs:105:34 [INFO] [stderr] | [INFO] [stderr] 105 | let pix = F::as_u8_slice(&mut self.pixels); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `(c.red() as i32)` [INFO] [stderr] --> src/rgba8.rs:32:21 [INFO] [stderr] | [INFO] [stderr] 32 | let red = (c.red() as i32) << 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: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:32:21 [INFO] [stderr] | [INFO] [stderr] 32 | let red = (c.red() as i32) << 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(c.red())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:33:21 [INFO] [stderr] | [INFO] [stderr] 33 | let green = (c.green() as i32) << 8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(c.green())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:34:21 [INFO] [stderr] | [INFO] [stderr] 34 | let blue = (c.blue() as i32) << 16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(c.blue())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:35:21 [INFO] [stderr] | [INFO] [stderr] 35 | let alpha = (c.alpha() as i32) << 24; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(c.alpha())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:77:17 [INFO] [stderr] | [INFO] [stderr] 77 | let r = self.red() as i32 - bot.red() as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.red())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:77:39 [INFO] [stderr] | [INFO] [stderr] 77 | let r = self.red() as i32 - bot.red() as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(bot.red())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:78:17 [INFO] [stderr] | [INFO] [stderr] 78 | let g = self.green() as i32 - bot.green() as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.green())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:78:39 [INFO] [stderr] | [INFO] [stderr] 78 | let g = self.green() as i32 - bot.green() as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(bot.green())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:79:17 [INFO] [stderr] | [INFO] [stderr] 79 | let b = self.blue() as i32 - bot.blue() as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.blue())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:79:39 [INFO] [stderr] | [INFO] [stderr] 79 | let b = self.blue() as i32 - bot.blue() as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(bot.blue())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:80:17 [INFO] [stderr] | [INFO] [stderr] 80 | let a = self.alpha() as i32 - bot.alpha() as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.alpha())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:80:39 [INFO] [stderr] | [INFO] [stderr] 80 | let a = self.alpha() as i32 - bot.alpha() as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(bot.alpha())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:81:22 [INFO] [stderr] | [INFO] [stderr] 81 | let red = (bot.red() as i32 + scale_i32(r, alpha)) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(bot.red())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:82:22 [INFO] [stderr] | [INFO] [stderr] 82 | let green = (bot.green() as i32 + scale_i32(g, alpha)) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(bot.green())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:83:22 [INFO] [stderr] | [INFO] [stderr] 83 | let blue = (bot.blue() as i32 + scale_i32(b, alpha)) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(bot.blue())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:84:22 [INFO] [stderr] | [INFO] [stderr] 84 | let alpha = (bot.alpha() as i32 + scale_i32(a, alpha)) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(bot.alpha())` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:91:17 [INFO] [stderr] | [INFO] [stderr] 91 | let c = a * b as i32; [INFO] [stderr] | ^^^^^^^^ help: try: `i32::from(b)` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:99:18 [INFO] [stderr] | [INFO] [stderr] 99 | let aa = (a as u32) << 8; [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(a)` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/rgba8.rs:100:18 [INFO] [stderr] | [INFO] [stderr] 100 | let bb = b as u32; [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(b)` [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: casting from `*mut rgba8::Rgba8` to a more-strictly-aligned pointer (`*mut std::arch::x86_64::__m128i`) [INFO] [stderr] --> src/rgba8.rs:144:19 [INFO] [stderr] | [INFO] [stderr] 144 | let dst = dst.offset(off) as *mut __m128i; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [INFO] [stderr] [INFO] [stderr] error: casting from `*const u8` to a more-strictly-aligned pointer (`*const i32`) [INFO] [stderr] --> src/rgba8.rs:145:19 [INFO] [stderr] | [INFO] [stderr] 145 | let src = src.offset(off) as *const i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/stroker.rs:199:12 [INFO] [stderr] | [INFO] [stderr] 199 | if self.points.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.points.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] error: aborting due to 14 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `footile`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "72047c54a85b652c344563ff1c3e28acff501d0950e6d842bbc015f06991bbaa"` [INFO] running `"docker" "rm" "-f" "72047c54a85b652c344563ff1c3e28acff501d0950e6d842bbc015f06991bbaa"` [INFO] [stdout] 72047c54a85b652c344563ff1c3e28acff501d0950e6d842bbc015f06991bbaa