[INFO] updating cached repository nutcase84/piano [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/nutcase84/piano [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/nutcase84/piano" "work/ex/clippy-test-run/sources/stable/gh/nutcase84/piano"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/nutcase84/piano'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/nutcase84/piano" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/nutcase84/piano"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/nutcase84/piano'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] abe074523491d7b9e085aaf0d9c54c2831a44f40 [INFO] sha for GitHub repo nutcase84/piano: abe074523491d7b9e085aaf0d9c54c2831a44f40 [INFO] validating manifest of nutcase84/piano 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 nutcase84/piano 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 nutcase84/piano [INFO] finished frobbing nutcase84/piano [INFO] frobbed toml for nutcase84/piano written to work/ex/clippy-test-run/sources/stable/gh/nutcase84/piano/Cargo.toml [INFO] started frobbing nutcase84/piano [INFO] finished frobbing nutcase84/piano [INFO] frobbed toml for nutcase84/piano written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/nutcase84/piano/Cargo.toml [INFO] crate nutcase84/piano has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting nutcase84/piano against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/nutcase84/piano:/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] 1c6a4cea71c0b2e1ca325da1c9e160d5d420ebd9f9fc65d62292286e95940aa3 [INFO] running `"docker" "start" "-a" "1c6a4cea71c0b2e1ca325da1c9e160d5d420ebd9f9fc65d62292286e95940aa3"` [INFO] [stderr] Checking rand v0.5.5 [INFO] [stderr] Checking vst v0.0.1 [INFO] [stderr] Checking piano v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/event.rs:37:4 [INFO] [stderr] | [INFO] [stderr] 37 | if note.released { [INFO] [stderr] | _____________^ [INFO] [stderr] 38 | | if !sustain { [INFO] [stderr] 39 | | note.damper = true; [INFO] [stderr] 40 | | note.released = false; [INFO] [stderr] 41 | | note.time = 0_f32; [INFO] [stderr] 42 | | } [INFO] [stderr] 43 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 37 | if note.released && !sustain { [INFO] [stderr] 38 | note.damper = true; [INFO] [stderr] 39 | note.released = false; [INFO] [stderr] 40 | note.time = 0_f32; [INFO] [stderr] 41 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: variable `active_notes` is assigned to, but never used [INFO] [stderr] --> src/event.rs:34:10 [INFO] [stderr] | [INFO] [stderr] 34 | let mut active_notes = 0; // could be useful later [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] = note: consider using `_active_notes` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/filter.rs:54:7 [INFO] [stderr] | [INFO] [stderr] 54 | for i in 0..buffer_size { [INFO] [stderr] | ^ help: consider using `_i` instead [INFO] [stderr] [INFO] [stderr] warning: function is never used: `hammer` [INFO] [stderr] --> src/hammer.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | pub fn hammer(string: &mut Waveguide, stiffness: f32, size: usize, velocity: f32, position: usize, time: f32) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `IntegerAllPass` [INFO] [stderr] --> src/filter.rs:3:1 [INFO] [stderr] | [INFO] [stderr] 3 | pub struct IntegerAllPass { // Generic integer-delay allpass [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/filter.rs:10:2 [INFO] [stderr] | [INFO] [stderr] 10 | pub fn new(gain: f32, size: usize) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `update` [INFO] [stderr] --> src/filter.rs:18:2 [INFO] [stderr] | [INFO] [stderr] 18 | pub fn update(&mut self, input: f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/hammer.rs:10:3 [INFO] [stderr] | [INFO] [stderr] 10 | let mut hammer_position; [INFO] [stderr] | _________^ [INFO] [stderr] 11 | | if time < length_retract { [INFO] [stderr] 12 | | hammer_position = 1_f32;//time/length_strike; [INFO] [stderr] 13 | | } else { [INFO] [stderr] 14 | | hammer_position = 1_f32-(time-length_strike)/length_retract; [INFO] [stderr] 15 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let hammer_position = if time < length_retract { 1_f32 } else { 1_f32-(time-length_strike)/length_retract };` [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: casting u8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/tuning.rs:5:62 [INFO] [stderr] | [INFO] [stderr] 5 | let mut points = (440_f32*(2_f32.powf(1_f32/12_f32)).powf(-(note as f32-32_f32))) as usize; //67 [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f32::from(note)` [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: an inclusive range would be more readable [INFO] [stderr] --> src/filter.rs:42:12 [INFO] [stderr] | [INFO] [stderr] 42 | for k in 0..order+1 { [INFO] [stderr] | ^^^^^^^^^^ help: use: `0..=order` [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: an inclusive range would be more readable [INFO] [stderr] --> src/filter.rs:44:13 [INFO] [stderr] | [INFO] [stderr] 44 | for i in 0..order+1 { [INFO] [stderr] | ^^^^^^^^^^ help: use: `0..=order` [INFO] [stderr] | [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: an inclusive range would be more readable [INFO] [stderr] --> src/filter.rs:91:12 [INFO] [stderr] | [INFO] [stderr] 91 | for n in 0..self.order+1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: use: `0..=self.order` [INFO] [stderr] | [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: called `.get().unwrap()` on a VecDeque. Using `[]` is more clear and more concise [INFO] [stderr] --> src/filter.rs:92:34 [INFO] [stderr] | [INFO] [stderr] 92 | filtered_output += self.b[n]**self.input.get(n).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.input[n]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a VecDeque. Using `[]` is more clear and more concise [INFO] [stderr] --> src/filter.rs:94:35 [INFO] [stderr] | [INFO] [stderr] 94 | filtered_output -= self.a[n]**self.output.get(n-1).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.output[n-1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/filter.rs:101:36 [INFO] [stderr] | [INFO] [stderr] 101 | } else if filtered_output < -1.0 { [INFO] [stderr] | __________________________________________^ [INFO] [stderr] 102 | | //filtered_output = -1.0; [INFO] [stderr] 103 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/filter.rs:99:28 [INFO] [stderr] | [INFO] [stderr] 99 | if filtered_output > 1.0 { [INFO] [stderr] | __________________________________^ [INFO] [stderr] 100 | | //filtered_output = 1.0; [INFO] [stderr] 101 | | } else if filtered_output < -1.0 { [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [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/lib.rs:49:4 [INFO] [stderr] | [INFO] [stderr] 49 | match event { [INFO] [stderr] | _____________^ [INFO] [stderr] 50 | | Event::Midi(ev) => { [INFO] [stderr] 51 | | match ev.data[0] { [INFO] [stderr] 52 | | 128 => { // note off [INFO] [stderr] ... | [INFO] [stderr] 76 | | _ => (), [INFO] [stderr] 77 | | } [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] 49 | if let Event::Midi(ev) = event { [INFO] [stderr] 50 | match ev.data[0] { [INFO] [stderr] 51 | 128 => { // note off [INFO] [stderr] 52 | self.notes[ev.data[1] as usize].released = true; [INFO] [stderr] 53 | }, [INFO] [stderr] 54 | 144 => { // note on [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:59:52 [INFO] [stderr] | [INFO] [stderr] 59 | self.notes[ev.data[1] as usize].velocity = (ev.data[2] as f32 / 127_f32).powi(2); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f32::from(ev.data[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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:62:8 [INFO] [stderr] | [INFO] [stderr] 62 | match ev.data[1] { [INFO] [stderr] | _____________________________^ [INFO] [stderr] 63 | | 64 => { // sustain/damper pedal [INFO] [stderr] 64 | | if ev.data[2] >= 64 { // pedal on [INFO] [stderr] 65 | | self.sustain = true [INFO] [stderr] ... | [INFO] [stderr] 70 | | _ => (), [INFO] [stderr] 71 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [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] 62 | if let 64 = ev.data[1] { // sustain/damper pedal [INFO] [stderr] 63 | if ev.data[2] >= 64 { // pedal on [INFO] [stderr] 64 | self.sustain = true [INFO] [stderr] 65 | } else { // pedal off [INFO] [stderr] 66 | self.sustain = false [INFO] [stderr] 67 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `piano`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/event.rs:37:4 [INFO] [stderr] | [INFO] [stderr] 37 | if note.released { [INFO] [stderr] | _____________^ [INFO] [stderr] 38 | | if !sustain { [INFO] [stderr] 39 | | note.damper = true; [INFO] [stderr] 40 | | note.released = false; [INFO] [stderr] 41 | | note.time = 0_f32; [INFO] [stderr] 42 | | } [INFO] [stderr] 43 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 37 | if note.released && !sustain { [INFO] [stderr] 38 | note.damper = true; [INFO] [stderr] 39 | note.released = false; [INFO] [stderr] 40 | note.time = 0_f32; [INFO] [stderr] 41 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: variable `active_notes` is assigned to, but never used [INFO] [stderr] --> src/event.rs:34:10 [INFO] [stderr] | [INFO] [stderr] 34 | let mut active_notes = 0; // could be useful later [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] = note: consider using `_active_notes` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/filter.rs:54:7 [INFO] [stderr] | [INFO] [stderr] 54 | for i in 0..buffer_size { [INFO] [stderr] | ^ help: consider using `_i` instead [INFO] [stderr] [INFO] [stderr] warning: function is never used: `hammer` [INFO] [stderr] --> src/hammer.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | pub fn hammer(string: &mut Waveguide, stiffness: f32, size: usize, velocity: f32, position: usize, time: f32) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `IntegerAllPass` [INFO] [stderr] --> src/filter.rs:3:1 [INFO] [stderr] | [INFO] [stderr] 3 | pub struct IntegerAllPass { // Generic integer-delay allpass [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/filter.rs:10:2 [INFO] [stderr] | [INFO] [stderr] 10 | pub fn new(gain: f32, size: usize) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `update` [INFO] [stderr] --> src/filter.rs:18:2 [INFO] [stderr] | [INFO] [stderr] 18 | pub fn update(&mut self, input: f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/hammer.rs:10:3 [INFO] [stderr] | [INFO] [stderr] 10 | let mut hammer_position; [INFO] [stderr] | _________^ [INFO] [stderr] 11 | | if time < length_retract { [INFO] [stderr] 12 | | hammer_position = 1_f32;//time/length_strike; [INFO] [stderr] 13 | | } else { [INFO] [stderr] 14 | | hammer_position = 1_f32-(time-length_strike)/length_retract; [INFO] [stderr] 15 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let hammer_position = if time < length_retract { 1_f32 } else { 1_f32-(time-length_strike)/length_retract };` [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: casting u8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/tuning.rs:5:62 [INFO] [stderr] | [INFO] [stderr] 5 | let mut points = (440_f32*(2_f32.powf(1_f32/12_f32)).powf(-(note as f32-32_f32))) as usize; //67 [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f32::from(note)` [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: an inclusive range would be more readable [INFO] [stderr] --> src/filter.rs:42:12 [INFO] [stderr] | [INFO] [stderr] 42 | for k in 0..order+1 { [INFO] [stderr] | ^^^^^^^^^^ help: use: `0..=order` [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: an inclusive range would be more readable [INFO] [stderr] --> src/filter.rs:44:13 [INFO] [stderr] | [INFO] [stderr] 44 | for i in 0..order+1 { [INFO] [stderr] | ^^^^^^^^^^ help: use: `0..=order` [INFO] [stderr] | [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: an inclusive range would be more readable [INFO] [stderr] --> src/filter.rs:91:12 [INFO] [stderr] | [INFO] [stderr] 91 | for n in 0..self.order+1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: use: `0..=self.order` [INFO] [stderr] | [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: called `.get().unwrap()` on a VecDeque. Using `[]` is more clear and more concise [INFO] [stderr] --> src/filter.rs:92:34 [INFO] [stderr] | [INFO] [stderr] 92 | filtered_output += self.b[n]**self.input.get(n).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.input[n]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a VecDeque. Using `[]` is more clear and more concise [INFO] [stderr] --> src/filter.rs:94:35 [INFO] [stderr] | [INFO] [stderr] 94 | filtered_output -= self.a[n]**self.output.get(n-1).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.output[n-1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/filter.rs:101:36 [INFO] [stderr] | [INFO] [stderr] 101 | } else if filtered_output < -1.0 { [INFO] [stderr] | __________________________________________^ [INFO] [stderr] 102 | | //filtered_output = -1.0; [INFO] [stderr] 103 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/filter.rs:99:28 [INFO] [stderr] | [INFO] [stderr] 99 | if filtered_output > 1.0 { [INFO] [stderr] | __________________________________^ [INFO] [stderr] 100 | | //filtered_output = 1.0; [INFO] [stderr] 101 | | } else if filtered_output < -1.0 { [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [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/lib.rs:49:4 [INFO] [stderr] | [INFO] [stderr] 49 | match event { [INFO] [stderr] | _____________^ [INFO] [stderr] 50 | | Event::Midi(ev) => { [INFO] [stderr] 51 | | match ev.data[0] { [INFO] [stderr] 52 | | 128 => { // note off [INFO] [stderr] ... | [INFO] [stderr] 76 | | _ => (), [INFO] [stderr] 77 | | } [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] 49 | if let Event::Midi(ev) = event { [INFO] [stderr] 50 | match ev.data[0] { [INFO] [stderr] 51 | 128 => { // note off [INFO] [stderr] 52 | self.notes[ev.data[1] as usize].released = true; [INFO] [stderr] 53 | }, [INFO] [stderr] 54 | 144 => { // note on [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:59:52 [INFO] [stderr] | [INFO] [stderr] 59 | self.notes[ev.data[1] as usize].velocity = (ev.data[2] as f32 / 127_f32).powi(2); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f32::from(ev.data[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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:62:8 [INFO] [stderr] | [INFO] [stderr] 62 | match ev.data[1] { [INFO] [stderr] | _____________________________^ [INFO] [stderr] 63 | | 64 => { // sustain/damper pedal [INFO] [stderr] 64 | | if ev.data[2] >= 64 { // pedal on [INFO] [stderr] 65 | | self.sustain = true [INFO] [stderr] ... | [INFO] [stderr] 70 | | _ => (), [INFO] [stderr] 71 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [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] 62 | if let 64 = ev.data[1] { // sustain/damper pedal [INFO] [stderr] 63 | if ev.data[2] >= 64 { // pedal on [INFO] [stderr] 64 | self.sustain = true [INFO] [stderr] 65 | } else { // pedal off [INFO] [stderr] 66 | self.sustain = false [INFO] [stderr] 67 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `piano`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "1c6a4cea71c0b2e1ca325da1c9e160d5d420ebd9f9fc65d62292286e95940aa3"` [INFO] running `"docker" "rm" "-f" "1c6a4cea71c0b2e1ca325da1c9e160d5d420ebd9f9fc65d62292286e95940aa3"` [INFO] [stdout] 1c6a4cea71c0b2e1ca325da1c9e160d5d420ebd9f9fc65d62292286e95940aa3