[INFO] crate skeletal_animation 0.27.0 is already in cache [INFO] extracting crate skeletal_animation 0.27.0 into work/ex/clippy-test-run/sources/stable/reg/skeletal_animation/0.27.0 [INFO] extracting crate skeletal_animation 0.27.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/skeletal_animation/0.27.0 [INFO] validating manifest of skeletal_animation-0.27.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 skeletal_animation-0.27.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 skeletal_animation-0.27.0 [INFO] finished frobbing skeletal_animation-0.27.0 [INFO] frobbed toml for skeletal_animation-0.27.0 written to work/ex/clippy-test-run/sources/stable/reg/skeletal_animation/0.27.0/Cargo.toml [INFO] started frobbing skeletal_animation-0.27.0 [INFO] finished frobbing skeletal_animation-0.27.0 [INFO] frobbed toml for skeletal_animation-0.27.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/skeletal_animation/0.27.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 skeletal_animation-0.27.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/skeletal_animation/0.27.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] 4b6cd2b497107239ac802fa37f78cf2ed49a8dc4f1bd7c6b98a67b2547059f28 [INFO] running `"docker" "start" "-a" "4b6cd2b497107239ac802fa37f78cf2ed49a8dc4f1bd7c6b98a67b2547059f28"` [INFO] [stderr] Compiling freetype-sys v0.7.1 [INFO] [stderr] Checking quaternion v0.3.1 [INFO] [stderr] Compiling num-derive v0.2.4 [INFO] [stderr] Checking png v0.12.0 [INFO] [stderr] Checking gfx_core v0.8.3 [INFO] [stderr] Checking jpeg-decoder v0.1.15 [INFO] [stderr] Checking collada v0.8.0 [INFO] [stderr] Checking dual_quaternion v0.1.0 [INFO] [stderr] Checking freetype-rs v0.19.1 [INFO] [stderr] Checking tiff v0.2.1 [INFO] [stderr] Checking image v0.20.1 [INFO] [stderr] Checking gfx v0.17.1 [INFO] [stderr] Checking gfx_text v0.23.0 [INFO] [stderr] Checking piston-gfx_texture v0.34.0 [INFO] [stderr] Checking gfx_debug_draw v0.22.0 [INFO] [stderr] Checking skeletal_animation v0.27.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/animation.rs:146:13 [INFO] [stderr] | [INFO] [stderr] 146 | samples: samples, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `samples` [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/animation.rs:208:17 [INFO] [stderr] | [INFO] [stderr] 208 | local_poses: local_poses, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `local_poses` [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/animation.rs:213:13 [INFO] [stderr] | [INFO] [stderr] 213 | samples_per_second: samples_per_second, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `samples_per_second` [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/animation.rs:214:13 [INFO] [stderr] | [INFO] [stderr] 214 | samples: samples, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `samples` [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/animation.rs:239:13 [INFO] [stderr] | [INFO] [stderr] 239 | clip: clip, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `clip` [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/skinned_renderer.rs:127:17 [INFO] [stderr] | [INFO] [stderr] 127 | slice: slice, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `slice` [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/skinned_renderer.rs:129:17 [INFO] [stderr] | [INFO] [stderr] 129 | skinning_transforms_buffer: skinning_transforms_buffer, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `skinning_transforms_buffer` [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/skinned_renderer.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | pso: pso, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pso` [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/skinned_renderer.rs:137:13 [INFO] [stderr] | [INFO] [stderr] 137 | render_batches: render_batches, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `render_batches` [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/controller.rs:146:17 [INFO] [stderr] | [INFO] [stderr] 146 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [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/controller.rs:147:17 [INFO] [stderr] | [INFO] [stderr] 147 | blend_tree: blend_tree, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `blend_tree` [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/controller.rs:148:17 [INFO] [stderr] | [INFO] [stderr] 148 | transitions: transitions, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `transitions` [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/controller.rs:203:17 [INFO] [stderr] | [INFO] [stderr] 203 | blend_tree: blend_tree, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `blend_tree` [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/controller.rs:210:13 [INFO] [stderr] | [INFO] [stderr] 210 | parameters: parameters, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `parameters` [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/controller.rs:214:13 [INFO] [stderr] | [INFO] [stderr] 214 | states: states, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `states` [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/math.rs:21:9 [INFO] [stderr] | [INFO] [stderr] 21 | let y = s * q1.1[1] + t * q2.1[1]; [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/math.rs:22:9 [INFO] [stderr] | [INFO] [stderr] 22 | let z = s * q1.1[2] + t * q2.1[2]; [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: 5th binding whose name is just one char [INFO] [stderr] --> src/math.rs:80:13 [INFO] [stderr] | [INFO] [stderr] 80 | let k = next[j]; [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: 6th binding whose name is just one char [INFO] [stderr] --> src/math.rs:82:13 [INFO] [stderr] | [INFO] [stderr] 82 | let t = (m[i][i] - (m[j][j] + m[k][k])) + 1.0; [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: 7th binding whose name is just one char [INFO] [stderr] --> src/math.rs:83:13 [INFO] [stderr] | [INFO] [stderr] 83 | let s = inv_sqrt(t) * 0.5; [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: 5th binding whose name is just one char [INFO] [stderr] --> src/math.rs:103:9 [INFO] [stderr] | [INFO] [stderr] 103 | let z = q.1[2]; [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/transform.rs:100:13 [INFO] [stderr] | [INFO] [stderr] 100 | rotation: rotation, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `rotation` [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/transform.rs:102:13 [INFO] [stderr] | [INFO] [stderr] 102 | translation: translation, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `translation` [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/animation.rs:146:13 [INFO] [stderr] | [INFO] [stderr] 146 | samples: samples, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `samples` [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/animation.rs:208:17 [INFO] [stderr] | [INFO] [stderr] 208 | local_poses: local_poses, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `local_poses` [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/animation.rs:213:13 [INFO] [stderr] | [INFO] [stderr] 213 | samples_per_second: samples_per_second, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `samples_per_second` [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/animation.rs:214:13 [INFO] [stderr] | [INFO] [stderr] 214 | samples: samples, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `samples` [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/animation.rs:239:13 [INFO] [stderr] | [INFO] [stderr] 239 | clip: clip, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `clip` [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/skinned_renderer.rs:127:17 [INFO] [stderr] | [INFO] [stderr] 127 | slice: slice, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `slice` [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/skinned_renderer.rs:129:17 [INFO] [stderr] | [INFO] [stderr] 129 | skinning_transforms_buffer: skinning_transforms_buffer, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `skinning_transforms_buffer` [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/skinned_renderer.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | pso: pso, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pso` [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/skinned_renderer.rs:137:13 [INFO] [stderr] | [INFO] [stderr] 137 | render_batches: render_batches, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `render_batches` [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/controller.rs:146:17 [INFO] [stderr] | [INFO] [stderr] 146 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [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/controller.rs:147:17 [INFO] [stderr] | [INFO] [stderr] 147 | blend_tree: blend_tree, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `blend_tree` [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/controller.rs:148:17 [INFO] [stderr] | [INFO] [stderr] 148 | transitions: transitions, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `transitions` [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/controller.rs:203:17 [INFO] [stderr] | [INFO] [stderr] 203 | blend_tree: blend_tree, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `blend_tree` [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/controller.rs:210:13 [INFO] [stderr] | [INFO] [stderr] 210 | parameters: parameters, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `parameters` [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/controller.rs:214:13 [INFO] [stderr] | [INFO] [stderr] 214 | states: states, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `states` [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/math.rs:21:9 [INFO] [stderr] | [INFO] [stderr] 21 | let y = s * q1.1[1] + t * q2.1[1]; [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/math.rs:22:9 [INFO] [stderr] | [INFO] [stderr] 22 | let z = s * q1.1[2] + t * q2.1[2]; [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: 5th binding whose name is just one char [INFO] [stderr] --> src/math.rs:80:13 [INFO] [stderr] | [INFO] [stderr] 80 | let k = next[j]; [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: 6th binding whose name is just one char [INFO] [stderr] --> src/math.rs:82:13 [INFO] [stderr] | [INFO] [stderr] 82 | let t = (m[i][i] - (m[j][j] + m[k][k])) + 1.0; [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: 7th binding whose name is just one char [INFO] [stderr] --> src/math.rs:83:13 [INFO] [stderr] | [INFO] [stderr] 83 | let s = inv_sqrt(t) * 0.5; [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: 5th binding whose name is just one char [INFO] [stderr] --> src/math.rs:103:9 [INFO] [stderr] | [INFO] [stderr] 103 | let z = q.1[2]; [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/transform.rs:100:13 [INFO] [stderr] | [INFO] [stderr] 100 | rotation: rotation, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `rotation` [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/transform.rs:102:13 [INFO] [stderr] | [INFO] [stderr] 102 | translation: translation, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `translation` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/math.rs:136:9 [INFO] [stderr] | [INFO] [stderr] 136 | i = 0x5f3759df - (i >> 1); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x5f37_59df` [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/math.rs:136:9 [INFO] [stderr] | [INFO] [stderr] 136 | i = 0x5f3759df - (i >> 1); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x5f37_59df` [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/math.rs:181:27 [INFO] [stderr] | [INFO] [stderr] 181 | static EPSILON: f32 = 0.000001; [INFO] [stderr] | ^^^^^^^^ help: consider: `0.000_001` [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/transform.rs:263:27 [INFO] [stderr] | [INFO] [stderr] 263 | static EPSILON: f32 = 0.000001; [INFO] [stderr] | ^^^^^^^^ help: consider: `0.000_001` [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: the loop variable `i` is used to index `blended_poses` [INFO] [stderr] --> src/animation.rs:111:18 [INFO] [stderr] | [INFO] [stderr] 111 | for i in 0 .. sample_1.local_poses.len() { [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] 111 | for (i, ) in blended_poses.iter_mut().enumerate().take(sample_1.local_poses.len()) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods called `as_*` usually take self by reference or self by mutable reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/animation.rs:123:31 [INFO] [stderr] | [INFO] [stderr] 123 | pub fn as_difference_clip(source_clip: &AnimationClip, reference_clip: &AnimationClip) -> AnimationClip { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/animation.rs:127:17 [INFO] [stderr] | [INFO] [stderr] 127 | let ref source_sample = source_clip.samples[sample_index]; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^------------------------------------- help: try: `let source_sample = &source_clip.samples[sample_index];` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/animation.rs:130:17 [INFO] [stderr] | [INFO] [stderr] 130 | let ref reference_sample = reference_clip.samples[sample_index % reference_clip.samples.len()]; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^----------------------------------------------------------------------- help: try: `let reference_sample = &reference_clip.samples[sample_index % reference_clip.samples.len()];` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/animation.rs:160:58 [INFO] [stderr] | [INFO] [stderr] 160 | pub fn from_collada(skeleton: &Skeleton, animations: &Vec, transform: &Matrix4) -> AnimationClip { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[collada::Animation]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/animation.rs:249:12 [INFO] [stderr] | [INFO] [stderr] 249 | if self.playback_rate != new_rate { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(self.playback_rate - new_rate).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/animation.rs:249:12 [INFO] [stderr] | [INFO] [stderr] 249 | if self.playback_rate != new_rate { [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: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/skinned_renderer.rs:266:24 [INFO] [stderr] | [INFO] [stderr] 266 | if let Some(_) = a.1 { uvs += 1; } [INFO] [stderr] | -------^^^^^^^-------------------- help: try this: `if a.1.is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/skinned_renderer.rs:267:24 [INFO] [stderr] | [INFO] [stderr] 267 | if let Some(_) = a.2 { normals += 1; } [INFO] [stderr] | -------^^^^^^^------------------------ help: try this: `if a.2.is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/skinned_renderer.rs:273:17 [INFO] [stderr] | [INFO] [stderr] 273 | / match shape { [INFO] [stderr] 274 | | &collada::Shape::Triangle(a, b, c) => { [INFO] [stderr] 275 | | add(a); [INFO] [stderr] 276 | | add(b); [INFO] [stderr] ... | [INFO] [stderr] 279 | | _ => {} [INFO] [stderr] 280 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 273 | if let &collada::Shape::Triangle(a, b, c) = shape { [INFO] [stderr] 274 | add(a); [INFO] [stderr] 275 | add(b); [INFO] [stderr] 276 | add(c); [INFO] [stderr] 277 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/skinned_renderer.rs:273:17 [INFO] [stderr] | [INFO] [stderr] 273 | / match shape { [INFO] [stderr] 274 | | &collada::Shape::Triangle(a, b, c) => { [INFO] [stderr] 275 | | add(a); [INFO] [stderr] 276 | | add(b); [INFO] [stderr] ... | [INFO] [stderr] 279 | | _ => {} [INFO] [stderr] 280 | | } [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] 273 | match *shape { [INFO] [stderr] 274 | collada::Shape::Triangle(a, b, c) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `blended_poses` [INFO] [stderr] --> src/animation.rs:111:18 [INFO] [stderr] | [INFO] [stderr] 111 | for i in 0 .. sample_1.local_poses.len() { [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] 111 | for (i, ) in blended_poses.iter_mut().enumerate().take(sample_1.local_poses.len()) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods called `as_*` usually take self by reference or self by mutable reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/animation.rs:123:31 [INFO] [stderr] | [INFO] [stderr] 123 | pub fn as_difference_clip(source_clip: &AnimationClip, reference_clip: &AnimationClip) -> AnimationClip { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/animation.rs:127:17 [INFO] [stderr] | [INFO] [stderr] 127 | let ref source_sample = source_clip.samples[sample_index]; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^------------------------------------- help: try: `let source_sample = &source_clip.samples[sample_index];` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/animation.rs:130:17 [INFO] [stderr] | [INFO] [stderr] 130 | let ref reference_sample = reference_clip.samples[sample_index % reference_clip.samples.len()]; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^----------------------------------------------------------------------- help: try: `let reference_sample = &reference_clip.samples[sample_index % reference_clip.samples.len()];` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/animation.rs:160:58 [INFO] [stderr] | [INFO] [stderr] 160 | pub fn from_collada(skeleton: &Skeleton, animations: &Vec, transform: &Matrix4) -> AnimationClip { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[collada::Animation]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/animation.rs:249:12 [INFO] [stderr] | [INFO] [stderr] 249 | if self.playback_rate != new_rate { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(self.playback_rate - new_rate).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/animation.rs:249:12 [INFO] [stderr] | [INFO] [stderr] 249 | if self.playback_rate != new_rate { [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: it looks like you're manually copying between slices [INFO] [stderr] --> src/blend_tree.rs:428:22 [INFO] [stderr] | [INFO] [stderr] 428 | for i in 0 .. 64 { [INFO] [stderr] | ^^^^^^^ help: try replacing the loop by: `target_poses[..64].clone_from_slice(&output_poses[..64])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_memcpy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/blend_tree.rs:473:51 [INFO] [stderr] | [INFO] [stderr] 473 | (*output_pose) = output_pose.lerp(ik_pose.clone(), blend_parameter); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `ik_pose` [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] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/controller.rs:61:32 [INFO] [stderr] | [INFO] [stderr] 61 | Operator::Equal => parameters[&self.parameter[..]] == self.value, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(parameters[&self.parameter[..]] - self.value).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/controller.rs:61:32 [INFO] [stderr] | [INFO] [stderr] 61 | Operator::Equal => parameters[&self.parameter[..]] == self.value, [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/controller.rs:62:35 [INFO] [stderr] | [INFO] [stderr] 62 | Operator::NotEqual => parameters[&self.parameter[..]] != self.value, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(parameters[&self.parameter[..]] - self.value).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/controller.rs:62:35 [INFO] [stderr] | [INFO] [stderr] 62 | Operator::NotEqual => parameters[&self.parameter[..]] != self.value, [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 f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/controller.rs:231:62 [INFO] [stderr] | [INFO] [stderr] 231 | if self.local_clock + ext_dt >= start_time + transition.duration as f64{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(transition.duration)` [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 f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/controller.rs:296:90 [INFO] [stderr] | [INFO] [stderr] 296 | let blend_parameter = ((self.local_clock + ext_dt - transition_start_time) / transition.duration as f64) as f32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(transition.duration)` [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 `manager::AssetManager` [INFO] [stderr] --> src/manager.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | / pub fn new() -> AssetManager { [INFO] [stderr] 31 | | AssetManager { [INFO] [stderr] 32 | | animation_clips: HashMap::new(), [INFO] [stderr] 33 | | controller_defs: HashMap::new(), [INFO] [stderr] 34 | | } [INFO] [stderr] 35 | | } [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] 23 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/manager.rs:52:25 [INFO] [stderr] | [INFO] [stderr] 52 | let ref source_clip = self.animation_clips[&difference_clip_def.source_clip[..]]; [INFO] [stderr] | ----^^^^^^^^^^^^^^^-------------------------------------------------------------- help: try: `let source_clip = &self.animation_clips[&difference_clip_def.source_clip[..]];` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/manager.rs:53:25 [INFO] [stderr] | [INFO] [stderr] 53 | let ref reference_clip = self.animation_clips[&difference_clip_def.reference_clip[..]]; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^----------------------------------------------------------------- help: try: `let reference_clip = &self.animation_clips[&difference_clip_def.reference_clip[..]];` [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: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/skinned_renderer.rs:266:24 [INFO] [stderr] | [INFO] [stderr] 266 | if let Some(_) = a.1 { uvs += 1; } [INFO] [stderr] | -------^^^^^^^-------------------- help: try this: `if a.1.is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/skinned_renderer.rs:267:24 [INFO] [stderr] | [INFO] [stderr] 267 | if let Some(_) = a.2 { normals += 1; } [INFO] [stderr] | -------^^^^^^^------------------------ help: try this: `if a.2.is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/skinned_renderer.rs:273:17 [INFO] [stderr] | [INFO] [stderr] 273 | / match shape { [INFO] [stderr] 274 | | &collada::Shape::Triangle(a, b, c) => { [INFO] [stderr] 275 | | add(a); [INFO] [stderr] 276 | | add(b); [INFO] [stderr] ... | [INFO] [stderr] 279 | | _ => {} [INFO] [stderr] 280 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 273 | if let &collada::Shape::Triangle(a, b, c) = shape { [INFO] [stderr] 274 | add(a); [INFO] [stderr] 275 | add(b); [INFO] [stderr] 276 | add(c); [INFO] [stderr] 277 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/skinned_renderer.rs:273:17 [INFO] [stderr] | [INFO] [stderr] 273 | / match shape { [INFO] [stderr] 274 | | &collada::Shape::Triangle(a, b, c) => { [INFO] [stderr] 275 | | add(a); [INFO] [stderr] 276 | | add(b); [INFO] [stderr] ... | [INFO] [stderr] 279 | | _ => {} [INFO] [stderr] 280 | | } [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] 273 | match *shape { [INFO] [stderr] 274 | collada::Shape::Triangle(a, b, c) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/math.rs:12:82 [INFO] [stderr] | [INFO] [stderr] 12 | pub fn lerp_quaternion(q1: &Quaternion, q2: &Quaternion, blend_factor: &f32) -> Quaternion { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/math.rs:69:9 [INFO] [stderr] | [INFO] [stderr] 69 | / let mut i = 0; [INFO] [stderr] 70 | | [INFO] [stderr] 71 | | if m[1][1] > m[0][0] { [INFO] [stderr] 72 | | i = 1; [INFO] [stderr] 73 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let i = if m[1][1] > m[0][0] { 1 } else { 0 };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: transmute from a `i32` to a `f32` [INFO] [stderr] --> src/math.rs:137:18 [INFO] [stderr] | [INFO] [stderr] 137 | y = unsafe { mem::transmute(i) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider using: `f32::from_bits(i as u32)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_int_to_float)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_int_to_float [INFO] [stderr] [INFO] [stderr] error: aborting due to 3 previous errors [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/blend_tree.rs:428:22 [INFO] [stderr] | [INFO] [stderr] 428 | for i in 0 .. 64 { [INFO] [stderr] | ^^^^^^^ help: try replacing the loop by: `target_poses[..64].clone_from_slice(&output_poses[..64])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_memcpy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/blend_tree.rs:473:51 [INFO] [stderr] | [INFO] [stderr] 473 | (*output_pose) = output_pose.lerp(ik_pose.clone(), blend_parameter); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `ik_pose` [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] error: Could not compile `skeletal_animation`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/controller.rs:61:32 [INFO] [stderr] | [INFO] [stderr] 61 | Operator::Equal => parameters[&self.parameter[..]] == self.value, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(parameters[&self.parameter[..]] - self.value).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/controller.rs:61:32 [INFO] [stderr] | [INFO] [stderr] 61 | Operator::Equal => parameters[&self.parameter[..]] == self.value, [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/controller.rs:62:35 [INFO] [stderr] | [INFO] [stderr] 62 | Operator::NotEqual => parameters[&self.parameter[..]] != self.value, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(parameters[&self.parameter[..]] - self.value).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/controller.rs:62:35 [INFO] [stderr] | [INFO] [stderr] 62 | Operator::NotEqual => parameters[&self.parameter[..]] != self.value, [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 f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/controller.rs:231:62 [INFO] [stderr] | [INFO] [stderr] 231 | if self.local_clock + ext_dt >= start_time + transition.duration as f64{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(transition.duration)` [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 f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/controller.rs:296:90 [INFO] [stderr] | [INFO] [stderr] 296 | let blend_parameter = ((self.local_clock + ext_dt - transition_start_time) / transition.duration as f64) as f32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(transition.duration)` [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 `manager::AssetManager` [INFO] [stderr] --> src/manager.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | / pub fn new() -> AssetManager { [INFO] [stderr] 31 | | AssetManager { [INFO] [stderr] 32 | | animation_clips: HashMap::new(), [INFO] [stderr] 33 | | controller_defs: HashMap::new(), [INFO] [stderr] 34 | | } [INFO] [stderr] 35 | | } [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] 23 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/manager.rs:52:25 [INFO] [stderr] | [INFO] [stderr] 52 | let ref source_clip = self.animation_clips[&difference_clip_def.source_clip[..]]; [INFO] [stderr] | ----^^^^^^^^^^^^^^^-------------------------------------------------------------- help: try: `let source_clip = &self.animation_clips[&difference_clip_def.source_clip[..]];` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/manager.rs:53:25 [INFO] [stderr] | [INFO] [stderr] 53 | let ref reference_clip = self.animation_clips[&difference_clip_def.reference_clip[..]]; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^----------------------------------------------------------------- help: try: `let reference_clip = &self.animation_clips[&difference_clip_def.reference_clip[..]];` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/math.rs:12:82 [INFO] [stderr] | [INFO] [stderr] 12 | pub fn lerp_quaternion(q1: &Quaternion, q2: &Quaternion, blend_factor: &f32) -> Quaternion { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/math.rs:69:9 [INFO] [stderr] | [INFO] [stderr] 69 | / let mut i = 0; [INFO] [stderr] 70 | | [INFO] [stderr] 71 | | if m[1][1] > m[0][0] { [INFO] [stderr] 72 | | i = 1; [INFO] [stderr] 73 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let i = if m[1][1] > m[0][0] { 1 } else { 0 };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: transmute from a `i32` to a `f32` [INFO] [stderr] --> src/math.rs:137:18 [INFO] [stderr] | [INFO] [stderr] 137 | y = unsafe { mem::transmute(i) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider using: `f32::from_bits(i as u32)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_int_to_float)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_int_to_float [INFO] [stderr] [INFO] [stderr] error: aborting due to 3 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `skeletal_animation`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "4b6cd2b497107239ac802fa37f78cf2ed49a8dc4f1bd7c6b98a67b2547059f28"` [INFO] running `"docker" "rm" "-f" "4b6cd2b497107239ac802fa37f78cf2ed49a8dc4f1bd7c6b98a67b2547059f28"` [INFO] [stdout] 4b6cd2b497107239ac802fa37f78cf2ed49a8dc4f1bd7c6b98a67b2547059f28