[INFO] crate alac 0.5.0 is already in cache [INFO] extracting crate alac 0.5.0 into work/ex/clippy-test-run/sources/stable/reg/alac/0.5.0 [INFO] extracting crate alac 0.5.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/alac/0.5.0 [INFO] validating manifest of alac-0.5.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 alac-0.5.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 alac-0.5.0 [INFO] finished frobbing alac-0.5.0 [INFO] frobbed toml for alac-0.5.0 written to work/ex/clippy-test-run/sources/stable/reg/alac/0.5.0/Cargo.toml [INFO] started frobbing alac-0.5.0 [INFO] finished frobbing alac-0.5.0 [INFO] frobbed toml for alac-0.5.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/alac/0.5.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 alac-0.5.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/alac/0.5.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] 80d099554f6a642f5bb4cbac2333bbca29b16f9b71dc792fe456f4ace6bc67b9 [INFO] running `"docker" "start" "-a" "80d099554f6a642f5bb4cbac2333bbca29b16f9b71dc792fe456f4ace6bc67b9"` [INFO] [stderr] Checking alac v0.5.0 (/opt/crater/workdir) [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/dec.rs:396:9 [INFO] [stderr] | [INFO] [stderr] 396 | let s = q * m + r; [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: 5th binding whose name is just one char [INFO] [stderr] --> src/dec.rs:396:9 [INFO] [stderr] | [INFO] [stderr] 396 | let s = q * m + r; [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: operator precedence can trip the unwary [INFO] [stderr] --> src/dec.rs:554:51 [INFO] [stderr] | [INFO] [stderr] 554 | prediction_error -= error_sign * (predicted * sign >> lpc_quant) * (j as i32 + 1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider parenthesizing your expression: `(predicted * sign) >> lpc_quant` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::precedence)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#precedence [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/reader.rs:44:45 [INFO] [stderr] | [INFO] [stderr] 44 | ReadError::UnsupportedFormat => return None, [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `None` [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: operator precedence can trip the unwary [INFO] [stderr] --> src/dec.rs:554:51 [INFO] [stderr] | [INFO] [stderr] 554 | prediction_error -= error_sign * (predicted * sign >> lpc_quant) * (j as i32 + 1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider parenthesizing your expression: `(predicted * sign) >> lpc_quant` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::precedence)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#precedence [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/reader.rs:44:45 [INFO] [stderr] | [INFO] [stderr] 44 | ReadError::UnsupportedFormat => return None, [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `None` [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/bitcursor.rs:109:25 [INFO] [stderr] | [INFO] [stderr] 109 | self.current = ((bytes[0] as u32) << 24) | ((bytes[1] as u32) << 16) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u32::from(bytes[0])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/bitcursor.rs:109:53 [INFO] [stderr] | [INFO] [stderr] 109 | self.current = ((bytes[0] as u32) << 24) | ((bytes[1] as u32) << 16) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u32::from(bytes[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/bitcursor.rs:110:16 [INFO] [stderr] | [INFO] [stderr] 110 | | ((bytes[2] as u32) << 8) | bytes[3] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u32::from(bytes[2])` [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/bitcursor.rs:110:42 [INFO] [stderr] | [INFO] [stderr] 110 | | ((bytes[2] as u32) << 8) | bytes[3] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(bytes[3])` [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/bitcursor.rs:109:25 [INFO] [stderr] | [INFO] [stderr] 109 | self.current = ((bytes[0] as u32) << 24) | ((bytes[1] as u32) << 16) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u32::from(bytes[0])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/bitcursor.rs:109:53 [INFO] [stderr] | [INFO] [stderr] 109 | self.current = ((bytes[0] as u32) << 24) | ((bytes[1] as u32) << 16) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u32::from(bytes[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/bitcursor.rs:110:16 [INFO] [stderr] | [INFO] [stderr] 110 | | ((bytes[2] as u32) << 8) | bytes[3] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u32::from(bytes[2])` [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/bitcursor.rs:110:42 [INFO] [stderr] | [INFO] [stderr] 110 | | ((bytes[2] as u32) << 8) | bytes[3] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(bytes[3])` [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/dec.rs:253:28 [INFO] [stderr] | [INFO] [stderr] 253 | lpc_quant[i] = reader.read_u8(4)? as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(reader.read_u8(4)?)` [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 u16 may become silently lossy if types change [INFO] [stderr] --> src/dec.rs:254:28 [INFO] [stderr] | [INFO] [stderr] 254 | pb_factor[i] = reader.read_u8(3)? as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(reader.read_u8(3)?)` [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: the loop variable `j` is used to index `mix_buf` [INFO] [stderr] --> src/dec.rs:313:22 [INFO] [stderr] | [INFO] [stderr] 313 | for j in 0..element_channels as usize { [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] 313 | for (j, ) in mix_buf.iter().enumerate().take(element_channels as usize) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/dec.rs:369:21 [INFO] [stderr] | [INFO] [stderr] 369 | while q != 9 && reader.read_bit()? == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `reader.read_bit()?` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/dec.rs:413:33 [INFO] [stderr] | [INFO] [stderr] 413 | let mut rice_history: u32 = config.mb as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u32::from(config.mb)` [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/dec.rs:414:30 [INFO] [stderr] | [INFO] [stderr] 414 | let rice_history_mult = (config.pb as u32 * pb_factor as u32) / 4; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u32::from(config.pb)` [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 u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/dec.rs:414:49 [INFO] [stderr] | [INFO] [stderr] 414 | let rice_history_mult = (config.pb as u32 * pb_factor as u32) / 4; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u32::from(pb_factor)` [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: the loop variable `j` is only used to index `buf`. [INFO] [stderr] --> src/dec.rs:479:26 [INFO] [stderr] | [INFO] [stderr] 479 | for j in 0..zero_block_len { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 479 | for in buf.iter_mut().take(zero_block_len) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/dec.rs:523:28 [INFO] [stderr] | [INFO] [stderr] 523 | let buf = &mut buf[i - lpc_order..i + 1]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: use: `i - lpc_order..=i` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/dec.rs:528:39 [INFO] [stderr] | [INFO] [stderr] 528 | predicted += (x - mean) * (*coef as i32); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i32::from(*coef)` [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 i8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/dec.rs:567:19 [INFO] [stderr] | [INFO] [stderr] 567 | let mix_res = mix_res as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i32::from(mix_res)` [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: the loop variable `j` is only used to index `buf`. [INFO] [stderr] --> src/dec.rs:595:18 [INFO] [stderr] | [INFO] [stderr] 595 | for j in 0..channels { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 595 | for in buf.iter_mut().take(channels) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/dec.rs:596:30 [INFO] [stderr] | [INFO] [stderr] 596 | let extra_bits = reader.read_u16(sample_shift)? as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(reader.read_u16(sample_shift)?)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/mp4.rs:53:14 [INFO] [stderr] | [INFO] [stderr] 53 | .ok_or(mp4_error("no alac tracks found"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| mp4_error("no alac tracks found"))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: called `filter(p).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(p)` instead. [INFO] [stderr] --> src/mp4.rs:48:21 [INFO] [stderr] | [INFO] [stderr] 48 | let track = context [INFO] [stderr] | _____________________^ [INFO] [stderr] 49 | | .tracks [INFO] [stderr] 50 | | .into_iter() [INFO] [stderr] 51 | | .filter(|track| track.codec_type == CodecType::ALAC) [INFO] [stderr] 52 | | .next() [INFO] [stderr] | |___________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::filter_next)] on by default [INFO] [stderr] = note: replace `filter(|track| track.codec_type == CodecType::ALAC).next()` with `find(|track| track.codec_type == CodecType::ALAC)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/reader.rs:133:22 [INFO] [stderr] | [INFO] [stderr] 133 | .map_err(|err| ReadError::Decoder(err))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ReadError::Decoder` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/reader.rs:135:12 [INFO] [stderr] | [INFO] [stderr] 135 | if samples.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `samples.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/dec.rs:253:28 [INFO] [stderr] | [INFO] [stderr] 253 | lpc_quant[i] = reader.read_u8(4)? as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(reader.read_u8(4)?)` [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 u16 may become silently lossy if types change [INFO] [stderr] --> src/dec.rs:254:28 [INFO] [stderr] | [INFO] [stderr] 254 | pb_factor[i] = reader.read_u8(3)? as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(reader.read_u8(3)?)` [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: the loop variable `j` is used to index `mix_buf` [INFO] [stderr] --> src/dec.rs:313:22 [INFO] [stderr] | [INFO] [stderr] 313 | for j in 0..element_channels as usize { [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] 313 | for (j, ) in mix_buf.iter().enumerate().take(element_channels as usize) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/dec.rs:369:21 [INFO] [stderr] | [INFO] [stderr] 369 | while q != 9 && reader.read_bit()? == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `reader.read_bit()?` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/lib.rs:114:27 [INFO] [stderr] | [INFO] [stderr] 114 | let val = val.ok_or(invalid_data("too few sdp format parameters"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| invalid_data("too few sdp format parameters"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/dec.rs:413:33 [INFO] [stderr] | [INFO] [stderr] 413 | let mut rice_history: u32 = config.mb as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u32::from(config.mb)` [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/lib.rs:160:29 [INFO] [stderr] | [INFO] [stderr] 160 | self.frame_length * self.num_channels as u32 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.num_channels)` [INFO] [stderr] | [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/dec.rs:414:30 [INFO] [stderr] | [INFO] [stderr] 414 | let rice_history_mult = (config.pb as u32 * pb_factor as u32) / 4; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u32::from(config.pb)` [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] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/dec.rs:414:49 [INFO] [stderr] | [INFO] [stderr] 414 | let rice_history_mult = (config.pb as u32 * pb_factor as u32) / 4; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u32::from(pb_factor)` [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 u16 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:166:6 [INFO] [stderr] | [INFO] [stderr] 166 | ((buf[0] as u16) << 8) | (buf[1] as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(buf[0])` [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 u16 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:166:30 [INFO] [stderr] | [INFO] [stderr] 166 | ((buf[0] as u16) << 8) | (buf[1] as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(buf[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the loop variable `j` is only used to index `buf`. [INFO] [stderr] --> src/dec.rs:479:26 [INFO] [stderr] | [INFO] [stderr] 479 | for j in 0..zero_block_len { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 479 | for in buf.iter_mut().take(zero_block_len) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:171:6 [INFO] [stderr] | [INFO] [stderr] 171 | ((buf[0] as u32) << 24) | ((buf[1] as u32) << 16) | ((buf[2] as u32) << 8) | (buf[3] as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(buf[0])` [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/lib.rs:171:32 [INFO] [stderr] | [INFO] [stderr] 171 | ((buf[0] as u32) << 24) | ((buf[1] as u32) << 16) | ((buf[2] as u32) << 8) | (buf[3] as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(buf[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:171:58 [INFO] [stderr] | [INFO] [stderr] 171 | ((buf[0] as u32) << 24) | ((buf[1] as u32) << 16) | ((buf[2] as u32) << 8) | (buf[3] as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(buf[2])` [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/lib.rs:171:82 [INFO] [stderr] | [INFO] [stderr] 171 | ((buf[0] as u32) << 24) | ((buf[1] as u32) << 16) | ((buf[2] as u32) << 8) | (buf[3] as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(buf[3])` [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: an inclusive range would be more readable [INFO] [stderr] --> src/dec.rs:523:28 [INFO] [stderr] | [INFO] [stderr] 523 | let buf = &mut buf[i - lpc_order..i + 1]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: use: `i - lpc_order..=i` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/dec.rs:528:39 [INFO] [stderr] | [INFO] [stderr] 528 | predicted += (x - mean) * (*coef as i32); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i32::from(*coef)` [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 i8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/dec.rs:567:19 [INFO] [stderr] | [INFO] [stderr] 567 | let mix_res = mix_res as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i32::from(mix_res)` [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: the loop variable `j` is only used to index `buf`. [INFO] [stderr] --> src/dec.rs:595:18 [INFO] [stderr] | [INFO] [stderr] 595 | for j in 0..channels { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 595 | for in buf.iter_mut().take(channels) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/dec.rs:596:30 [INFO] [stderr] | [INFO] [stderr] 596 | let extra_bits = reader.read_u16(sample_shift)? as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(reader.read_u16(sample_shift)?)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/mp4.rs:53:14 [INFO] [stderr] | [INFO] [stderr] 53 | .ok_or(mp4_error("no alac tracks found"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| mp4_error("no alac tracks found"))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: called `filter(p).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(p)` instead. [INFO] [stderr] --> src/mp4.rs:48:21 [INFO] [stderr] | [INFO] [stderr] 48 | let track = context [INFO] [stderr] | _____________________^ [INFO] [stderr] 49 | | .tracks [INFO] [stderr] 50 | | .into_iter() [INFO] [stderr] 51 | | .filter(|track| track.codec_type == CodecType::ALAC) [INFO] [stderr] 52 | | .next() [INFO] [stderr] | |___________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::filter_next)] on by default [INFO] [stderr] = note: replace `filter(|track| track.codec_type == CodecType::ALAC).next()` with `find(|track| track.codec_type == CodecType::ALAC)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/reader.rs:133:22 [INFO] [stderr] | [INFO] [stderr] 133 | .map_err(|err| ReadError::Decoder(err))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ReadError::Decoder` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/reader.rs:135:12 [INFO] [stderr] | [INFO] [stderr] 135 | if samples.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `samples.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/lib.rs:114:27 [INFO] [stderr] | [INFO] [stderr] 114 | let val = val.ok_or(invalid_data("too few sdp format parameters"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| invalid_data("too few sdp format parameters"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:160:29 [INFO] [stderr] | [INFO] [stderr] 160 | self.frame_length * self.num_channels as u32 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.num_channels)` [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 u16 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:166:6 [INFO] [stderr] | [INFO] [stderr] 166 | ((buf[0] as u16) << 8) | (buf[1] as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(buf[0])` [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 u16 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:166:30 [INFO] [stderr] | [INFO] [stderr] 166 | ((buf[0] as u16) << 8) | (buf[1] as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(buf[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:171:6 [INFO] [stderr] | [INFO] [stderr] 171 | ((buf[0] as u32) << 24) | ((buf[1] as u32) << 16) | ((buf[2] as u32) << 8) | (buf[3] as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(buf[0])` [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/lib.rs:171:32 [INFO] [stderr] | [INFO] [stderr] 171 | ((buf[0] as u32) << 24) | ((buf[1] as u32) << 16) | ((buf[2] as u32) << 8) | (buf[3] as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(buf[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:171:58 [INFO] [stderr] | [INFO] [stderr] 171 | ((buf[0] as u32) << 24) | ((buf[1] as u32) << 16) | ((buf[2] as u32) << 8) | (buf[3] as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(buf[2])` [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/lib.rs:171:82 [INFO] [stderr] | [INFO] [stderr] 171 | ((buf[0] as u32) << 24) | ((buf[1] as u32) << 16) | ((buf[2] as u32) << 8) | (buf[3] as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(buf[3])` [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: Consider removing unnecessary double parentheses [INFO] [stderr] --> tests/single_packet.rs:18:23 [INFO] [stderr] | [INFO] [stderr] 18 | out_comp[i] = ((out_comp_bin[i * 2] as i16)) + ((out_comp_bin[i * 2 + 1] as i16) << 8); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::double_parens)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i16 may become silently lossy if types change [INFO] [stderr] --> tests/single_packet.rs:18:23 [INFO] [stderr] | [INFO] [stderr] 18 | out_comp[i] = ((out_comp_bin[i * 2] as i16)) + ((out_comp_bin[i * 2 + 1] as i16) << 8); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i16::from(out_comp_bin[i * 2])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i16 may become silently lossy if types change [INFO] [stderr] --> tests/single_packet.rs:18:57 [INFO] [stderr] | [INFO] [stderr] 18 | out_comp[i] = ((out_comp_bin[i * 2] as i16)) + ((out_comp_bin[i * 2 + 1] as i16) << 8); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i16::from(out_comp_bin[i * 2 + 1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: static item is never used: `COMPARE_CAF_I16` [INFO] [stderr] --> tests/decode_comparison.rs:20:1 [INFO] [stderr] | [INFO] [stderr] 20 | / static COMPARE_CAF_I16: &'static [(&'static str, &'static str)] = &[ [INFO] [stderr] 21 | | ("synth_44100_16_bit.wav", "synth_44100_16_bit_afconvert.caf"), [INFO] [stderr] 22 | | ]; [INFO] [stderr] | |__^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: static item is never used: `COMPARE_CAF_I32` [INFO] [stderr] --> tests/decode_comparison.rs:24:1 [INFO] [stderr] | [INFO] [stderr] 24 | / static COMPARE_CAF_I32: &'static [(&'static str, &'static str)] = &[ [INFO] [stderr] 25 | | ("synth_44100_16_bit.wav", "synth_44100_16_bit_afconvert.caf"), [INFO] [stderr] 26 | | ("synth_44100_24_bit.wav", "synth_44100_24_bit_afconvert.caf"), [INFO] [stderr] 27 | | ]; [INFO] [stderr] | |__^ [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 2.83s [INFO] running `"docker" "inspect" "80d099554f6a642f5bb4cbac2333bbca29b16f9b71dc792fe456f4ace6bc67b9"` [INFO] running `"docker" "rm" "-f" "80d099554f6a642f5bb4cbac2333bbca29b16f9b71dc792fe456f4ace6bc67b9"` [INFO] [stdout] 80d099554f6a642f5bb4cbac2333bbca29b16f9b71dc792fe456f4ace6bc67b9