[INFO] updating cached repository acomminos/rasterust [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/acomminos/rasterust [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/acomminos/rasterust" "work/ex/clippy-test-run/sources/stable/gh/acomminos/rasterust"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/acomminos/rasterust'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/acomminos/rasterust" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/acomminos/rasterust"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/acomminos/rasterust'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 1cd24fc237bbfa8fd8818aff4dd5d4482123db9e [INFO] sha for GitHub repo acomminos/rasterust: 1cd24fc237bbfa8fd8818aff4dd5d4482123db9e [INFO] validating manifest of acomminos/rasterust 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 acomminos/rasterust 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 acomminos/rasterust [INFO] finished frobbing acomminos/rasterust [INFO] frobbed toml for acomminos/rasterust written to work/ex/clippy-test-run/sources/stable/gh/acomminos/rasterust/Cargo.toml [INFO] started frobbing acomminos/rasterust [INFO] finished frobbing acomminos/rasterust [INFO] frobbed toml for acomminos/rasterust written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/acomminos/rasterust/Cargo.toml [INFO] crate acomminos/rasterust has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting acomminos/rasterust against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-1/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/acomminos/rasterust:/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 -Dclippy::into_iter_on_array" "-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] 3c93ce691714fb18804f794fe3f8d61170463570f25ac2d88de4409d179239a2 [INFO] running `"docker" "start" "-a" "3c93ce691714fb18804f794fe3f8d61170463570f25ac2d88de4409d179239a2"` [INFO] [stderr] Checking rasterust v0.0.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/rasterust/mod.rs:200:13 [INFO] [stderr] | [INFO] [stderr] 200 | mesh: mesh, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `mesh` [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/rasterust/mod.rs:239:13 [INFO] [stderr] | [INFO] [stderr] 239 | pos: pos, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pos` [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/rasterust/mod.rs:240:13 [INFO] [stderr] | [INFO] [stderr] 240 | rot: rot, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `rot` [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/rasterust/mod.rs:242:13 [INFO] [stderr] | [INFO] [stderr] 242 | fov: fov, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `fov` [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/rasterust/mod.rs:284:13 [INFO] [stderr] | [INFO] [stderr] 284 | camera: camera, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `camera` [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/rasterust/mod.rs:327:13 [INFO] [stderr] | [INFO] [stderr] 327 | width: width, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `width` [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/rasterust/mod.rs:328:13 [INFO] [stderr] | [INFO] [stderr] 328 | height: height, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `height` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/rasterust/mod.rs:329:13 [INFO] [stderr] | [INFO] [stderr] 329 | data: data, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [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/rasterust/mod.rs:368:17 [INFO] [stderr] | [INFO] [stderr] 368 | Color { r: r, g: g, b: b, a: a } [INFO] [stderr] | ^^^^ help: replace it with: `r` [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/rasterust/mod.rs:368:23 [INFO] [stderr] | [INFO] [stderr] 368 | Color { r: r, g: g, b: b, a: a } [INFO] [stderr] | ^^^^ help: replace it with: `g` [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/rasterust/mod.rs:368:29 [INFO] [stderr] | [INFO] [stderr] 368 | Color { r: r, g: g, b: b, a: a } [INFO] [stderr] | ^^^^ help: replace it with: `b` [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/rasterust/mod.rs:368:35 [INFO] [stderr] | [INFO] [stderr] 368 | Color { r: r, g: g, b: b, a: a } [INFO] [stderr] | ^^^^ help: replace it with: `a` [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/rasterust/mod.rs:421:13 [INFO] [stderr] | [INFO] [stderr] 421 | width: width, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `width` [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/rasterust/mod.rs:422:13 [INFO] [stderr] | [INFO] [stderr] 422 | height: height, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `height` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/rasterust/mod.rs:436:20 [INFO] [stderr] | [INFO] [stderr] 436 | let (r, g, b, a) = color.to_rgba32(); [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: 6th binding whose name is just one char [INFO] [stderr] --> src/rasterust/mod.rs:436:23 [INFO] [stderr] | [INFO] [stderr] 436 | let (r, g, b, a) = color.to_rgba32(); [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/rasterust/mod.rs:200:13 [INFO] [stderr] | [INFO] [stderr] 200 | mesh: mesh, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `mesh` [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/rasterust/mod.rs:239:13 [INFO] [stderr] | [INFO] [stderr] 239 | pos: pos, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pos` [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/rasterust/mod.rs:240:13 [INFO] [stderr] | [INFO] [stderr] 240 | rot: rot, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `rot` [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/rasterust/mod.rs:242:13 [INFO] [stderr] | [INFO] [stderr] 242 | fov: fov, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `fov` [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/rasterust/mod.rs:284:13 [INFO] [stderr] | [INFO] [stderr] 284 | camera: camera, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `camera` [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/rasterust/mod.rs:327:13 [INFO] [stderr] | [INFO] [stderr] 327 | width: width, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `width` [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/rasterust/mod.rs:328:13 [INFO] [stderr] | [INFO] [stderr] 328 | height: height, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `height` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/rasterust/mod.rs:329:13 [INFO] [stderr] | [INFO] [stderr] 329 | data: data, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [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/rasterust/mod.rs:368:17 [INFO] [stderr] | [INFO] [stderr] 368 | Color { r: r, g: g, b: b, a: a } [INFO] [stderr] | ^^^^ help: replace it with: `r` [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/rasterust/mod.rs:368:23 [INFO] [stderr] | [INFO] [stderr] 368 | Color { r: r, g: g, b: b, a: a } [INFO] [stderr] | ^^^^ help: replace it with: `g` [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/rasterust/mod.rs:368:29 [INFO] [stderr] | [INFO] [stderr] 368 | Color { r: r, g: g, b: b, a: a } [INFO] [stderr] | ^^^^ help: replace it with: `b` [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/rasterust/mod.rs:368:35 [INFO] [stderr] | [INFO] [stderr] 368 | Color { r: r, g: g, b: b, a: a } [INFO] [stderr] | ^^^^ help: replace it with: `a` [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/rasterust/mod.rs:421:13 [INFO] [stderr] | [INFO] [stderr] 421 | width: width, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `width` [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/rasterust/mod.rs:422:13 [INFO] [stderr] | [INFO] [stderr] 422 | height: height, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `height` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/rasterust/mod.rs:436:20 [INFO] [stderr] | [INFO] [stderr] 436 | let (r, g, b, a) = color.to_rgba32(); [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: 6th binding whose name is just one char [INFO] [stderr] --> src/rasterust/mod.rs:436:23 [INFO] [stderr] | [INFO] [stderr] 436 | let (r, g, b, a) = color.to_rgba32(); [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: unnecessary parentheses around `match` head expression [INFO] [stderr] --> src/rasterust/mod.rs:116:15 [INFO] [stderr] | [INFO] [stderr] 116 | match (self) { [INFO] [stderr] | ^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/rasterust/mod.rs:449:9 [INFO] [stderr] | [INFO] [stderr] 449 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `match` head expression [INFO] [stderr] --> src/rasterust/mod.rs:116:15 [INFO] [stderr] | [INFO] [stderr] 116 | match (self) { [INFO] [stderr] | ^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/rasterust/mod.rs:449:9 [INFO] [stderr] | [INFO] [stderr] 449 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning[E0170]: pattern binding `SourceOver` is named the same as one of the variants of the type `rasterust::CompositeMode` [INFO] [stderr] --> src/rasterust/mod.rs:434:13 [INFO] [stderr] | [INFO] [stderr] 434 | SourceOver => dest.multiply(1. - src.a) + *src [INFO] [stderr] | ^^^^^^^^^^ help: to match on the variant, qualify the path: `rasterust::CompositeMode::SourceOver` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `bary` [INFO] [stderr] --> src/rasterust/shader.rs:11:21 [INFO] [stderr] | [INFO] [stderr] 11 | fn shade(&self, bary: (f32, f32, f32)) -> Color { [INFO] [stderr] | ^^^^ help: consider using `_bary` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `rotation` [INFO] [stderr] --> src/rasterust/mod.rs:207:26 [INFO] [stderr] | [INFO] [stderr] 207 | fn rotate(&mut self, rotation: &Vector) { [INFO] [stderr] | ^^^^^^^^ help: consider using `_rotation` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `translation` [INFO] [stderr] --> src/rasterust/mod.rs:211:29 [INFO] [stderr] | [INFO] [stderr] 211 | fn translate(&mut self, translation: &Vector) { [INFO] [stderr] | ^^^^^^^^^^^ help: consider using `_translation` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `scale` [INFO] [stderr] --> src/rasterust/mod.rs:215:25 [INFO] [stderr] | [INFO] [stderr] 215 | fn scale(&mut self, scale: &Vector) { [INFO] [stderr] | ^^^^^ help: consider using `_scale` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `model_transform` [INFO] [stderr] --> src/rasterust/mod.rs:299:17 [INFO] [stderr] | [INFO] [stderr] 299 | let model_transform = &m.get_transform(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using `_model_transform` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/rasterust/mod.rs:323:13 [INFO] [stderr] | [INFO] [stderr] 323 | for i in 0..(width * height) { [INFO] [stderr] | ^ help: consider using `_i` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `SourceOver` [INFO] [stderr] --> src/rasterust/mod.rs:434:13 [INFO] [stderr] | [INFO] [stderr] 434 | SourceOver => dest.multiply(1. - src.a) + *src [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_SourceOver` instead [INFO] [stderr] [INFO] [stderr] warning: method is never used: `identity` [INFO] [stderr] --> src/rasterust/mod.rs:75:5 [INFO] [stderr] | [INFO] [stderr] 75 | fn identity() -> Matrix { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `scale` [INFO] [stderr] --> src/rasterust/mod.rs:89:5 [INFO] [stderr] | [INFO] [stderr] 89 | fn scale(scale: &Vector) -> Matrix { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `apply` [INFO] [stderr] --> src/rasterust/mod.rs:96:5 [INFO] [stderr] | [INFO] [stderr] 96 | fn apply(&self, vec: &Vector) -> Vector { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Rect` [INFO] [stderr] --> src/rasterust/mod.rs:142:1 [INFO] [stderr] | [INFO] [stderr] 142 | pub struct Rect { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `vertices` [INFO] [stderr] --> src/rasterust/mod.rs:157:5 [INFO] [stderr] | [INFO] [stderr] 157 | fn vertices(&self) -> Vec<&Vector> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `bounds` [INFO] [stderr] --> src/rasterust/mod.rs:164:5 [INFO] [stderr] | [INFO] [stderr] 164 | fn bounds(&self) -> Rect { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `scale` [INFO] [stderr] --> src/rasterust/mod.rs:193:5 [INFO] [stderr] | [INFO] [stderr] 193 | scale: Vector, [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `rot` [INFO] [stderr] --> src/rasterust/mod.rs:194:5 [INFO] [stderr] | [INFO] [stderr] 194 | rot: Vector, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `rotate` [INFO] [stderr] --> src/rasterust/mod.rs:207:5 [INFO] [stderr] | [INFO] [stderr] 207 | fn rotate(&mut self, rotation: &Vector) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `translate` [INFO] [stderr] --> src/rasterust/mod.rs:211:5 [INFO] [stderr] | [INFO] [stderr] 211 | fn translate(&mut self, translation: &Vector) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `scale` [INFO] [stderr] --> src/rasterust/mod.rs:215:5 [INFO] [stderr] | [INFO] [stderr] 215 | fn scale(&mut self, scale: &Vector) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `pos` [INFO] [stderr] --> src/rasterust/mod.rs:228:5 [INFO] [stderr] | [INFO] [stderr] 228 | pos: Vector, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `rot` [INFO] [stderr] --> src/rasterust/mod.rs:229:5 [INFO] [stderr] | [INFO] [stderr] 229 | rot: Vector, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `camera` [INFO] [stderr] --> src/rasterust/mod.rs:289:5 [INFO] [stderr] | [INFO] [stderr] 289 | pub fn camera<'a>(&'a self) -> &'a Camera { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `unpremultiply` [INFO] [stderr] --> src/rasterust/mod.rs:387:5 [INFO] [stderr] | [INFO] [stderr] 387 | fn unpremultiply(&self) -> Color { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/rasterust/shader.rs:12:9 [INFO] [stderr] | [INFO] [stderr] 12 | / match self { [INFO] [stderr] 13 | | &SolidColorShader(ref color) => color.clone() [INFO] [stderr] 14 | | } [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] 12 | match *self { [INFO] [stderr] 13 | SolidColorShader(ref color) => color.clone() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/rasterust/shader.rs:13:45 [INFO] [stderr] | [INFO] [stderr] 13 | &SolidColorShader(ref color) => color.clone() [INFO] [stderr] | ^^^^^^^^^^^^^ help: try dereferencing it: `*color` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `data` [INFO] [stderr] --> src/rasterust/mod.rs:98:18 [INFO] [stderr] | [INFO] [stderr] 98 | for i 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] 98 | for (i, ) in data.iter_mut().enumerate().take(3) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/rasterust/mod.rs:105:9 [INFO] [stderr] | [INFO] [stderr] 105 | / match self { [INFO] [stderr] 106 | | &Matrix(ref data) => { [INFO] [stderr] 107 | | Vector([data[row * 4], [INFO] [stderr] 108 | | data[1 + (row * 4)], [INFO] [stderr] ... | [INFO] [stderr] 111 | | } [INFO] [stderr] 112 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [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] 105 | match *self { [INFO] [stderr] 106 | Matrix(ref data) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/rasterust/mod.rs:116:9 [INFO] [stderr] | [INFO] [stderr] 116 | / match (self) { [INFO] [stderr] 117 | | &Matrix(ref data) => { [INFO] [stderr] 118 | | Vector([data[col], [INFO] [stderr] 119 | | data[col + 4], [INFO] [stderr] ... | [INFO] [stderr] 122 | | } [INFO] [stderr] 123 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [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] 116 | match *(self) { [INFO] [stderr] 117 | Matrix(ref data) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/rasterust/mod.rs:158:9 [INFO] [stderr] | [INFO] [stderr] 158 | / match self { [INFO] [stderr] 159 | | &Triangle(ref a, ref b, ref c) => vec![a, b, c] [INFO] [stderr] 160 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [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 *self { [INFO] [stderr] 159 | Triangle(ref a, ref b, ref c) => vec![a, b, c] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/rasterust/mod.rs:260:9 [INFO] [stderr] | [INFO] [stderr] 260 | / match tri { [INFO] [stderr] 261 | | &Triangle(ref a, ref b, ref c) => { [INFO] [stderr] 262 | | Triangle(self.project_vector(a), [INFO] [stderr] 263 | | self.project_vector(b), [INFO] [stderr] 264 | | self.project_vector(c)) [INFO] [stderr] 265 | | } [INFO] [stderr] 266 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [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] 260 | match *tri { [INFO] [stderr] 261 | Triangle(ref a, ref b, ref c) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/rasterust/mod.rs:289:5 [INFO] [stderr] | [INFO] [stderr] 289 | / pub fn camera<'a>(&'a self) -> &'a Camera { [INFO] [stderr] 290 | | &self.camera [INFO] [stderr] 291 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/rasterust/mod.rs:371:26 [INFO] [stderr] | [INFO] [stderr] 371 | fn from_rgba32(rgba: &u32) -> Color { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `u32` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/rasterust/mod.rs:372:19 [INFO] [stderr] | [INFO] [stderr] 372 | let max = u8::max_value() as f32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(u8::max_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: the operation is ineffective. Consider reducing it to `rgba` [INFO] [stderr] --> src/rasterust/mod.rs:376:22 [INFO] [stderr] | [INFO] [stderr] 376 | (((rgba >> 0) & 0xFFu32) as f32)/max) [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 f32 may become silently lossy if types change [INFO] [stderr] --> src/rasterust/mod.rs:381:20 [INFO] [stderr] | [INFO] [stderr] 381 | ((self.r * (u8::max_value() as f32)) as u8, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(u8::max_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 f32 may become silently lossy if types change [INFO] [stderr] --> src/rasterust/mod.rs:382:20 [INFO] [stderr] | [INFO] [stderr] 382 | (self.g * (u8::max_value() as f32)) as u8, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(u8::max_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 f32 may become silently lossy if types change [INFO] [stderr] --> src/rasterust/mod.rs:383:20 [INFO] [stderr] | [INFO] [stderr] 383 | (self.b * (u8::max_value() as f32)) as u8, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(u8::max_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 f32 may become silently lossy if types change [INFO] [stderr] --> src/rasterust/mod.rs:384:20 [INFO] [stderr] | [INFO] [stderr] 384 | (self.a * (u8::max_value() as f32)) as u8) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(u8::max_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: variable `SourceOver` should have a snake case name such as `source_over` [INFO] [stderr] --> src/rasterust/mod.rs:434:13 [INFO] [stderr] | [INFO] [stderr] 434 | SourceOver => dest.multiply(1. - src.a) + *src [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/rasterust/mod.rs:437:33 [INFO] [stderr] | [INFO] [stderr] 437 | self.color.put((x, y), ((r as u32) << 24) | ((g as u32) << 16) | ((b as u32) << 8) | a as u32) [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(r)` [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/rasterust/mod.rs:437:54 [INFO] [stderr] | [INFO] [stderr] 437 | self.color.put((x, y), ((r as u32) << 24) | ((g as u32) << 16) | ((b as u32) << 8) | a as u32) [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(g)` [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/rasterust/mod.rs:437:75 [INFO] [stderr] | [INFO] [stderr] 437 | self.color.put((x, y), ((r as u32) << 24) | ((g as u32) << 16) | ((b as u32) << 8) | a 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] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/rasterust/mod.rs:437:94 [INFO] [stderr] | [INFO] [stderr] 437 | self.color.put((x, y), ((r as u32) << 24) | ((g as u32) << 16) | ((b as u32) << 8) | a as u32) [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[E0170]: pattern binding `SourceOver` is named the same as one of the variants of the type `rasterust::CompositeMode` [INFO] [stderr] --> src/rasterust/mod.rs:434:13 [INFO] [stderr] | [INFO] [stderr] 434 | SourceOver => dest.multiply(1. - src.a) + *src [INFO] [stderr] | ^^^^^^^^^^ help: to match on the variant, qualify the path: `rasterust::CompositeMode::SourceOver` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `bary` [INFO] [stderr] --> src/rasterust/shader.rs:11:21 [INFO] [stderr] | [INFO] [stderr] 11 | fn shade(&self, bary: (f32, f32, f32)) -> Color { [INFO] [stderr] | ^^^^ help: consider using `_bary` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `rotation` [INFO] [stderr] --> src/rasterust/mod.rs:207:26 [INFO] [stderr] | [INFO] [stderr] 207 | fn rotate(&mut self, rotation: &Vector) { [INFO] [stderr] | ^^^^^^^^ help: consider using `_rotation` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `translation` [INFO] [stderr] --> src/rasterust/mod.rs:211:29 [INFO] [stderr] | [INFO] [stderr] 211 | fn translate(&mut self, translation: &Vector) { [INFO] [stderr] | ^^^^^^^^^^^ help: consider using `_translation` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `scale` [INFO] [stderr] --> src/rasterust/mod.rs:215:25 [INFO] [stderr] | [INFO] [stderr] 215 | fn scale(&mut self, scale: &Vector) { [INFO] [stderr] | ^^^^^ help: consider using `_scale` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `model_transform` [INFO] [stderr] --> src/rasterust/mod.rs:299:17 [INFO] [stderr] | [INFO] [stderr] 299 | let model_transform = &m.get_transform(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using `_model_transform` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/rasterust/mod.rs:323:13 [INFO] [stderr] | [INFO] [stderr] 323 | for i in 0..(width * height) { [INFO] [stderr] | ^ help: consider using `_i` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `SourceOver` [INFO] [stderr] --> src/rasterust/mod.rs:434:13 [INFO] [stderr] | [INFO] [stderr] 434 | SourceOver => dest.multiply(1. - src.a) + *src [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_SourceOver` instead [INFO] [stderr] [INFO] [stderr] warning: method is never used: `identity` [INFO] [stderr] --> src/rasterust/mod.rs:75:5 [INFO] [stderr] | [INFO] [stderr] 75 | fn identity() -> Matrix { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `scale` [INFO] [stderr] --> src/rasterust/mod.rs:89:5 [INFO] [stderr] | [INFO] [stderr] 89 | fn scale(scale: &Vector) -> Matrix { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `apply` [INFO] [stderr] --> src/rasterust/mod.rs:96:5 [INFO] [stderr] | [INFO] [stderr] 96 | fn apply(&self, vec: &Vector) -> Vector { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Rect` [INFO] [stderr] --> src/rasterust/mod.rs:142:1 [INFO] [stderr] | [INFO] [stderr] 142 | pub struct Rect { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `vertices` [INFO] [stderr] --> src/rasterust/mod.rs:157:5 [INFO] [stderr] | [INFO] [stderr] 157 | fn vertices(&self) -> Vec<&Vector> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `bounds` [INFO] [stderr] --> src/rasterust/mod.rs:164:5 [INFO] [stderr] | [INFO] [stderr] 164 | fn bounds(&self) -> Rect { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `scale` [INFO] [stderr] --> src/rasterust/mod.rs:193:5 [INFO] [stderr] | [INFO] [stderr] 193 | scale: Vector, [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `rot` [INFO] [stderr] --> src/rasterust/mod.rs:194:5 [INFO] [stderr] | [INFO] [stderr] 194 | rot: Vector, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `rotate` [INFO] [stderr] --> src/rasterust/mod.rs:207:5 [INFO] [stderr] | [INFO] [stderr] 207 | fn rotate(&mut self, rotation: &Vector) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `translate` [INFO] [stderr] --> src/rasterust/mod.rs:211:5 [INFO] [stderr] | [INFO] [stderr] 211 | fn translate(&mut self, translation: &Vector) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `scale` [INFO] [stderr] --> src/rasterust/mod.rs:215:5 [INFO] [stderr] | [INFO] [stderr] 215 | fn scale(&mut self, scale: &Vector) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `pos` [INFO] [stderr] --> src/rasterust/mod.rs:228:5 [INFO] [stderr] | [INFO] [stderr] 228 | pos: Vector, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `rot` [INFO] [stderr] --> src/rasterust/mod.rs:229:5 [INFO] [stderr] | [INFO] [stderr] 229 | rot: Vector, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `camera` [INFO] [stderr] --> src/rasterust/mod.rs:289:5 [INFO] [stderr] | [INFO] [stderr] 289 | pub fn camera<'a>(&'a self) -> &'a Camera { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `unpremultiply` [INFO] [stderr] --> src/rasterust/mod.rs:387:5 [INFO] [stderr] | [INFO] [stderr] 387 | fn unpremultiply(&self) -> Color { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/rasterust/shader.rs:12:9 [INFO] [stderr] | [INFO] [stderr] 12 | / match self { [INFO] [stderr] 13 | | &SolidColorShader(ref color) => color.clone() [INFO] [stderr] 14 | | } [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] 12 | match *self { [INFO] [stderr] 13 | SolidColorShader(ref color) => color.clone() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/rasterust/shader.rs:13:45 [INFO] [stderr] | [INFO] [stderr] 13 | &SolidColorShader(ref color) => color.clone() [INFO] [stderr] | ^^^^^^^^^^^^^ help: try dereferencing it: `*color` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `data` [INFO] [stderr] --> src/rasterust/mod.rs:98:18 [INFO] [stderr] | [INFO] [stderr] 98 | for i 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] 98 | for (i, ) in data.iter_mut().enumerate().take(3) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/rasterust/mod.rs:105:9 [INFO] [stderr] | [INFO] [stderr] 105 | / match self { [INFO] [stderr] 106 | | &Matrix(ref data) => { [INFO] [stderr] 107 | | Vector([data[row * 4], [INFO] [stderr] 108 | | data[1 + (row * 4)], [INFO] [stderr] ... | [INFO] [stderr] 111 | | } [INFO] [stderr] 112 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [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] 105 | match *self { [INFO] [stderr] 106 | Matrix(ref data) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/rasterust/mod.rs:116:9 [INFO] [stderr] | [INFO] [stderr] 116 | / match (self) { [INFO] [stderr] 117 | | &Matrix(ref data) => { [INFO] [stderr] 118 | | Vector([data[col], [INFO] [stderr] 119 | | data[col + 4], [INFO] [stderr] ... | [INFO] [stderr] 122 | | } [INFO] [stderr] 123 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [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] 116 | match *(self) { [INFO] [stderr] 117 | Matrix(ref data) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/rasterust/mod.rs:158:9 [INFO] [stderr] | [INFO] [stderr] 158 | / match self { [INFO] [stderr] 159 | | &Triangle(ref a, ref b, ref c) => vec![a, b, c] [INFO] [stderr] 160 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [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 *self { [INFO] [stderr] 159 | Triangle(ref a, ref b, ref c) => vec![a, b, c] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/rasterust/mod.rs:260:9 [INFO] [stderr] | [INFO] [stderr] 260 | / match tri { [INFO] [stderr] 261 | | &Triangle(ref a, ref b, ref c) => { [INFO] [stderr] 262 | | Triangle(self.project_vector(a), [INFO] [stderr] 263 | | self.project_vector(b), [INFO] [stderr] 264 | | self.project_vector(c)) [INFO] [stderr] 265 | | } [INFO] [stderr] 266 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [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] 260 | match *tri { [INFO] [stderr] 261 | Triangle(ref a, ref b, ref c) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/rasterust/mod.rs:289:5 [INFO] [stderr] | [INFO] [stderr] 289 | / pub fn camera<'a>(&'a self) -> &'a Camera { [INFO] [stderr] 290 | | &self.camera [INFO] [stderr] 291 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/rasterust/mod.rs:371:26 [INFO] [stderr] | [INFO] [stderr] 371 | fn from_rgba32(rgba: &u32) -> Color { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `u32` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/rasterust/mod.rs:372:19 [INFO] [stderr] | [INFO] [stderr] 372 | let max = u8::max_value() as f32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(u8::max_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: the operation is ineffective. Consider reducing it to `rgba` [INFO] [stderr] --> src/rasterust/mod.rs:376:22 [INFO] [stderr] | [INFO] [stderr] 376 | (((rgba >> 0) & 0xFFu32) as f32)/max) [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 f32 may become silently lossy if types change [INFO] [stderr] --> src/rasterust/mod.rs:381:20 [INFO] [stderr] | [INFO] [stderr] 381 | ((self.r * (u8::max_value() as f32)) as u8, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(u8::max_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 f32 may become silently lossy if types change [INFO] [stderr] --> src/rasterust/mod.rs:382:20 [INFO] [stderr] | [INFO] [stderr] 382 | (self.g * (u8::max_value() as f32)) as u8, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(u8::max_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 f32 may become silently lossy if types change [INFO] [stderr] --> src/rasterust/mod.rs:383:20 [INFO] [stderr] | [INFO] [stderr] 383 | (self.b * (u8::max_value() as f32)) as u8, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(u8::max_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 f32 may become silently lossy if types change [INFO] [stderr] --> src/rasterust/mod.rs:384:20 [INFO] [stderr] | [INFO] [stderr] 384 | (self.a * (u8::max_value() as f32)) as u8) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(u8::max_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: variable `SourceOver` should have a snake case name such as `source_over` [INFO] [stderr] --> src/rasterust/mod.rs:434:13 [INFO] [stderr] | [INFO] [stderr] 434 | SourceOver => dest.multiply(1. - src.a) + *src [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/rasterust/mod.rs:437:33 [INFO] [stderr] | [INFO] [stderr] 437 | self.color.put((x, y), ((r as u32) << 24) | ((g as u32) << 16) | ((b as u32) << 8) | a as u32) [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(r)` [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/rasterust/mod.rs:437:54 [INFO] [stderr] | [INFO] [stderr] 437 | self.color.put((x, y), ((r as u32) << 24) | ((g as u32) << 16) | ((b as u32) << 8) | a as u32) [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(g)` [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/rasterust/mod.rs:437:75 [INFO] [stderr] | [INFO] [stderr] 437 | self.color.put((x, y), ((r as u32) << 24) | ((g as u32) << 16) | ((b as u32) << 8) | a 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] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/rasterust/mod.rs:437:94 [INFO] [stderr] | [INFO] [stderr] 437 | self.color.put((x, y), ((r as u32) << 24) | ((g as u32) << 16) | ((b as u32) << 8) | a as u32) [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] Finished dev [unoptimized + debuginfo] target(s) in 0.63s [INFO] running `"docker" "inspect" "3c93ce691714fb18804f794fe3f8d61170463570f25ac2d88de4409d179239a2"` [INFO] running `"docker" "rm" "-f" "3c93ce691714fb18804f794fe3f8d61170463570f25ac2d88de4409d179239a2"` [INFO] [stdout] 3c93ce691714fb18804f794fe3f8d61170463570f25ac2d88de4409d179239a2