[INFO] cloning repository https://github.com/grimace87/midi-graph [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/grimace87/midi-graph" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgrimace87%2Fmidi-graph", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgrimace87%2Fmidi-graph'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 157d57e8f1d6b321671135ff56eb4f12d0438766 [INFO] linting grimace87/midi-graph against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgrimace87%2Fmidi-graph" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/grimace87/midi-graph [INFO] finished tweaking git repo https://github.com/grimace87/midi-graph [INFO] tweaked toml for git repo https://github.com/grimace87/midi-graph written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/grimace87/midi-graph on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/grimace87/midi-graph already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded cfg-if v1.0.1 [INFO] [stderr] Downloaded minicov v0.3.7 [INFO] [stderr] Downloaded wasm-bindgen-test v0.3.50 [INFO] [stderr] Downloaded proc-macro-crate v3.3.0 [INFO] [stderr] Downloaded wasm-bindgen-futures v0.4.50 [INFO] [stderr] Downloaded wasm-bindgen-test-macro v0.3.50 [INFO] [stderr] Downloaded dasp_sample v0.11.0 [INFO] [stderr] Downloaded alsa-sys v0.3.1 [INFO] [stderr] Downloaded num_enum_derive v0.7.4 [INFO] [stderr] Downloaded windows-link v0.1.3 [INFO] [stderr] Downloaded crossbeam-deque v0.8.6 [INFO] [stderr] Downloaded ndk-context v0.1.1 [INFO] [stderr] Downloaded biquad v0.5.0 [INFO] [stderr] Downloaded windows-targets v0.53.3 [INFO] [stderr] Downloaded coreaudio-sys v0.2.17 [INFO] [stderr] Downloaded alsa v0.9.1 [INFO] [stderr] Downloaded js-sys v0.3.77 [INFO] [stderr] Downloaded bumpalo v3.19.0 [INFO] [stderr] Downloaded glob v0.3.2 [INFO] [stderr] Downloaded num_enum v0.7.4 [INFO] [stderr] Downloaded crossbeam-epoch v0.9.18 [INFO] [stderr] Downloaded getrandom v0.3.3 [INFO] [stderr] Downloaded libm v0.2.15 [INFO] [stderr] Downloaded toml_edit v0.22.27 [INFO] [stderr] Downloaded indexmap v2.10.0 [INFO] [stderr] Downloaded serde_json v1.0.142 [INFO] [stderr] Downloaded rayon v1.10.0 [INFO] [stderr] Downloaded cpal v0.15.3 [INFO] [stderr] Downloaded itertools v0.13.0 [INFO] [stderr] Downloaded ndk-sys v0.5.0+25.2.9519653 [INFO] [stderr] Downloaded oboe-sys v0.6.1 [INFO] [stderr] Downloaded syn v2.0.104 [INFO] [stderr] Downloaded bindgen v0.72.0 [INFO] [stderr] Downloaded winnow v0.7.12 [INFO] [stderr] Downloaded ndk v0.8.0 [INFO] [stderr] Downloaded cc v1.2.32 [INFO] [stderr] Downloaded midly v0.5.3 [INFO] [stderr] Downloaded soundfont v0.1.0 [INFO] [stderr] Downloaded oboe v0.6.1 [INFO] [stderr] Downloaded windows-result v0.1.2 [INFO] [stderr] Downloaded hound v3.5.1 [INFO] [stderr] Downloaded memchr v2.7.5 [INFO] [stderr] Downloaded bitflags v2.9.1 [INFO] [stderr] Downloaded web-sys v0.3.77 [INFO] [stderr] Downloaded coreaudio-rs v0.11.3 [INFO] [stderr] Downloaded toml_datetime v0.6.11 [INFO] [stderr] Downloaded num-derive v0.4.2 [INFO] [stderr] Downloaded windows-core v0.54.0 [INFO] [stderr] Downloaded libloading v0.8.8 [INFO] [stderr] Downloaded rayon-core v1.12.1 [INFO] [stderr] Downloaded windows_aarch64_gnullvm v0.53.0 [INFO] [stderr] Downloaded windows_x86_64_gnullvm v0.53.0 [INFO] [stderr] Downloaded windows_x86_64_msvc v0.53.0 [INFO] [stderr] Downloaded windows_aarch64_msvc v0.53.0 [INFO] [stderr] Downloaded windows_i686_gnullvm v0.53.0 [INFO] [stderr] Downloaded libc v0.2.174 [INFO] [stderr] Downloaded windows_x86_64_gnu v0.53.0 [INFO] [stderr] Downloaded windows_i686_gnu v0.53.0 [INFO] [stderr] Downloaded windows_i686_msvc v0.53.0 [INFO] [stderr] Downloaded windows v0.54.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 9ff780909718f2734d65832568eaf6ff0e5b3a47e253139ae560f72bbd1e97ac [INFO] running `Command { std: "docker" "start" "-a" "9ff780909718f2734d65832568eaf6ff0e5b3a47e253139ae560f72bbd1e97ac", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "9ff780909718f2734d65832568eaf6ff0e5b3a47e253139ae560f72bbd1e97ac", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9ff780909718f2734d65832568eaf6ff0e5b3a47e253139ae560f72bbd1e97ac", kill_on_drop: false }` [INFO] [stdout] 9ff780909718f2734d65832568eaf6ff0e5b3a47e253139ae560f72bbd1e97ac [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 3f96aceb8f73c117e64ecd7f4e01f90b83cbec82e51fec6afb1453006184ed6b [INFO] running `Command { std: "docker" "start" "-a" "3f96aceb8f73c117e64ecd7f4e01f90b83cbec82e51fec6afb1453006184ed6b", kill_on_drop: false }` [INFO] [stderr] Compiling crossbeam-utils v0.8.21 [INFO] [stderr] Compiling proc-macro2 v1.0.95 [INFO] [stderr] Compiling unicode-ident v1.0.18 [INFO] [stderr] Compiling libc v0.2.174 [INFO] [stderr] Compiling pkg-config v0.3.32 [INFO] [stderr] Compiling rayon-core v1.12.1 [INFO] [stderr] Compiling libm v0.2.15 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling serde v1.0.219 [INFO] [stderr] Compiling cpal v0.15.3 [INFO] [stderr] Compiling serde_json v1.0.142 [INFO] [stderr] Checking either v1.15.0 [INFO] [stderr] Checking cfg-if v1.0.1 [INFO] [stderr] Checking bitflags v2.9.1 [INFO] [stderr] Checking dasp_sample v0.11.0 [INFO] [stderr] Checking memchr v2.7.5 [INFO] [stderr] Checking ryu v1.0.20 [INFO] [stderr] Checking itoa v1.0.15 [INFO] [stderr] Compiling alsa-sys v0.3.1 [INFO] [stderr] Checking byteorder v1.5.0 [INFO] [stderr] Checking crossbeam-epoch v0.9.18 [INFO] [stderr] Checking crossbeam-channel v0.5.15 [INFO] [stderr] Checking hound v3.5.1 [INFO] [stderr] Checking soundfont v0.1.0 [INFO] [stderr] Compiling quote v1.0.40 [INFO] [stderr] Checking crossbeam-deque v0.8.6 [INFO] [stderr] Compiling syn v2.0.104 [INFO] [stderr] Checking alsa v0.9.1 [INFO] [stderr] Checking rayon v1.10.0 [INFO] [stderr] Checking biquad v0.5.0 [INFO] [stderr] Compiling serde_derive v1.0.219 [INFO] [stderr] Checking midly v0.5.3 [INFO] [stderr] Checking midi-graph v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/tests.rs:10:19 [INFO] [stdout] | [INFO] [stdout] 10 | const MIDI_FILE: &'static str = "resources/sample-in-c.mid"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] = note: `#[warn(clippy::redundant_static_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/tests.rs:11:18 [INFO] [stdout] | [INFO] [stdout] 11 | const WAV_FILE: &'static str = "resources/guitar-a2-48k-stereo.wav"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `NodeRegistry` [INFO] [stdout] --> src/config/registry.rs:30:5 [INFO] [stdout] | [INFO] [stdout] 30 | / pub fn new() -> Self { [INFO] [stdout] 31 | | Self { [INFO] [stdout] 32 | | config_fns: HashMap::new(), [INFO] [stdout] 33 | | } [INFO] [stdout] 34 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 29 + impl Default for NodeRegistry { [INFO] [stdout] 30 + fn default() -> Self { [INFO] [stdout] 31 + Self::new() [INFO] [stdout] 32 + } [INFO] [stdout] 33 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/mix/base.rs:180:9 [INFO] [stdout] | [INFO] [stdout] 180 | / if let Some(previous_program) = self.consumer.swap_consumer(new_program) { [INFO] [stdout] 181 | | if let Some(index) = existing_placeholder_index { [INFO] [stdout] 182 | | self.program_sources [INFO] [stdout] 183 | | .insert(index, ConsumerCell::Source(previous_program)); [INFO] [stdout] 184 | | } [INFO] [stdout] 185 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 180 ~ if let Some(previous_program) = self.consumer.swap_consumer(new_program) [INFO] [stdout] 181 ~ && let Some(index) = existing_placeholder_index { [INFO] [stdout] 182 | self.program_sources [INFO] [stdout] 183 | .insert(index, ConsumerCell::Source(previous_program)); [INFO] [stdout] 184 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Coefficients` which implements the `Copy` trait [INFO] [stdout] --> src/node/effect/filter.rs:70:43 [INFO] [stdout] | [INFO] [stdout] 70 | left_filter: DirectForm1::new(coefficients.clone()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `coefficients` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/node/effect/filter.rs:105:23 [INFO] [stdout] | [INFO] [stdout] 105 | self.filter = filter.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try removing the `clone` call: `filter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Coefficients` which implements the `Copy` trait [INFO] [stdout] --> src/node/effect/filter.rs:109:50 [INFO] [stdout] | [INFO] [stdout] 109 | self.left_filter.update_coefficients(coefficients.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `coefficients` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/node/effect/filter.rs:135:21 [INFO] [stdout] | [INFO] [stdout] 135 | filter: self.filter.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.filter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `DirectForm1` which implements the `Copy` trait [INFO] [stdout] --> src/node/effect/filter.rs:139:26 [INFO] [stdout] | [INFO] [stdout] 139 | left_filter: self.left_filter.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.left_filter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `DirectForm1` which implements the `Copy` trait [INFO] [stdout] --> src/node/effect/filter.rs:140:27 [INFO] [stdout] | [INFO] [stdout] 140 | right_filter: self.right_filter.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.right_filter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/node/effect/filter.rs:174:12 [INFO] [stdout] | [INFO] [stdout] 174 | if !self.filter.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.filter.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`isize` -> `isize`) [INFO] [stdout] --> src/node/effect/lfo.rs:183:36 [INFO] [stdout] | [INFO] [stdout] 183 | let mut frames_available = frames_in_buffer as isize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `frames_in_buffer` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`isize` -> `isize`) [INFO] [stdout] --> src/node/effect/lfo.rs:186:58 [INFO] [stdout] | [INFO] [stdout] 186 | let frames_to_fill = frames_left_in_step.min(frames_available as isize); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `frames_available` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`isize` -> `isize`) [INFO] [stdout] --> src/node/effect/lfo.rs:192:45 [INFO] [stdout] | [INFO] [stdout] 192 | self.frames_progress_in_step += frames_to_fill as isize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `frames_to_fill` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` branch is empty [INFO] [stdout] --> src/node/effect/lfo.rs:196:17 [INFO] [stdout] | [INFO] [stdout] 196 | if matches!(self.property, Some(ModulationProperty::PitchMultiplier)) {} [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can remove it: `matches!(self.property, Some(ModulationProperty::PitchMultiplier));` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_ifs [INFO] [stdout] = note: `#[warn(clippy::needless_ifs)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`isize` -> `isize`) [INFO] [stdout] --> src/node/effect/transition.rs:160:36 [INFO] [stdout] | [INFO] [stdout] 160 | let mut frames_available = frames_in_buffer as isize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `frames_in_buffer` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`isize` -> `isize`) [INFO] [stdout] --> src/node/effect/transition.rs:170:58 [INFO] [stdout] | [INFO] [stdout] 170 | let frames_to_fill = frames_left_in_step.min(frames_available as isize); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `frames_available` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`isize` -> `isize`) [INFO] [stdout] --> src/node/effect/transition.rs:176:45 [INFO] [stdout] | [INFO] [stdout] 176 | self.frames_progress_in_step += frames_to_fill as isize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `frames_to_fill` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/node/generator/noise.rs:158:17 [INFO] [stdout] | [INFO] [stdout] 158 | / if note == self.current_note || event.target == EventTarget::Broadcast { [INFO] [stdout] 159 | | self.is_on = false; [INFO] [stdout] 160 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 157 ~ Event::NoteOff { note, .. } [INFO] [stdout] 158 ~ if (note == self.current_note || event.target == EventTarget::Broadcast) => { [INFO] [stdout] 159 | self.is_on = false; [INFO] [stdout] 160 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/node/generator/one_shot.rs:93:13 [INFO] [stdout] | [INFO] [stdout] 93 | file_metadata.channels as usize, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `file_metadata.channels` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/node/generator/sawtooth.rs:100:17 [INFO] [stdout] | [INFO] [stdout] 100 | / if self.current_note == note || event.target == EventTarget::Broadcast { [INFO] [stdout] 101 | | self.is_on = false; [INFO] [stdout] 102 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 99 ~ Event::NoteOff { note, .. } [INFO] [stdout] 100 ~ if (self.current_note == note || event.target == EventTarget::Broadcast) => { [INFO] [stdout] 101 | self.is_on = false; [INFO] [stdout] 102 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/node/generator/square.rs:108:17 [INFO] [stdout] | [INFO] [stdout] 108 | / if note == self.current_note || event.target == EventTarget::Broadcast { [INFO] [stdout] 109 | | self.is_on = false; [INFO] [stdout] 110 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 107 ~ Event::NoteOff { note, .. } [INFO] [stdout] 108 ~ if (note == self.current_note || event.target == EventTarget::Broadcast) => { [INFO] [stdout] 109 | self.is_on = false; [INFO] [stdout] 110 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/node/generator/triangle.rs:100:17 [INFO] [stdout] | [INFO] [stdout] 100 | / if note == self.current_note || event.target == EventTarget::Broadcast { [INFO] [stdout] 101 | | self.is_on = false; [INFO] [stdout] 102 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 99 ~ Event::NoteOff { note, .. } [INFO] [stdout] 100 ~ if (note == self.current_note || event.target == EventTarget::Broadcast) => { [INFO] [stdout] 101 | self.is_on = false; [INFO] [stdout] 102 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/node/generator/wav.rs:121:9 [INFO] [stdout] | [INFO] [stdout] 121 | / Ok(Self::new( [INFO] [stdout] 122 | | node_id, [INFO] [stdout] 123 | | metadata.sample_rate, [INFO] [stdout] 124 | | metadata.channels, [INFO] [stdout] ... | [INFO] [stdout] 130 | | buffer_length, [INFO] [stdout] 131 | | )?) [INFO] [stdout] | |___________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] = note: `#[warn(clippy::needless_question_mark)]` on by default [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 121 ~ Self::new( [INFO] [stdout] 122 | node_id, [INFO] [stdout] ... [INFO] [stdout] 130 | buffer_length, [INFO] [stdout] 131 ~ ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/node/generator/wav.rs:134:5 [INFO] [stdout] | [INFO] [stdout] 134 | / pub fn new( [INFO] [stdout] 135 | | node_id: Option, [INFO] [stdout] 136 | | sample_rate: u32, [INFO] [stdout] 137 | | channels: usize, [INFO] [stdout] ... | [INFO] [stdout] 143 | | buffer_length_samples: usize, [INFO] [stdout] 144 | | ) -> Result { [INFO] [stdout] | |____________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/node/generator/wav.rs:312:17 [INFO] [stdout] | [INFO] [stdout] 312 | / if self.current_note == note && self.is_on { [INFO] [stdout] 313 | | self.is_on = false; [INFO] [stdout] 314 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 311 ~ Event::NoteOff { note, vel: _ } [INFO] [stdout] 312 ~ if self.current_note == note && self.is_on => { [INFO] [stdout] 313 | self.is_on = false; [INFO] [stdout] 314 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u64` -> `u64`) [INFO] [stdout] --> src/node/group/font.rs:158:53 [INFO] [stdout] | [INFO] [stdout] 158 | cursor.seek(SeekFrom::Start(sample_chunk_metadata.offset as u64))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `sample_chunk_metadata.offset` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/node/group/font.rs:202:25 [INFO] [stdout] | [INFO] [stdout] 202 | range.buffer_index as usize, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `range.buffer_index` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/node/group/font.rs:203:25 [INFO] [stdout] | [INFO] [stdout] 203 | range.buffer_length as usize, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `range.buffer_length` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `note` after checking its variant with `is_some` [INFO] [stdout] --> src/node/group/font.rs:314:24 [INFO] [stdout] | [INFO] [stdout] 313 | if note.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = note` [INFO] [stdout] 314 | let note = note.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/node/group/util.rs:35:9 [INFO] [stdout] | [INFO] [stdout] 35 | / if let SfEnum::Value(GeneratorType::KeyRange) = generator.ty { [INFO] [stdout] 36 | | if let GeneratorAmount::Range(range) = generator.amount { [INFO] [stdout] 37 | | return Ok(NoteRange::new_inclusive_range(range.low, range.high)); [INFO] [stdout] 38 | | } [INFO] [stdout] 39 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 35 ~ if let SfEnum::Value(GeneratorType::KeyRange) = generator.ty [INFO] [stdout] 36 ~ && let GeneratorAmount::Range(range) = generator.amount { [INFO] [stdout] 37 | return Ok(NoteRange::new_inclusive_range(range.low, range.high)); [INFO] [stdout] 38 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/node/midi/cue.rs:25:25 [INFO] [stdout] | [INFO] [stdout] 25 | / if let Some(ch) = string.chars().nth(end_index) { [INFO] [stdout] 26 | | if ch.is_numeric() { [INFO] [stdout] 27 | | end_index += 1; [INFO] [stdout] 28 | | continue; [INFO] [stdout] 29 | | } [INFO] [stdout] 30 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 25 ~ if let Some(ch) = string.chars().nth(end_index) [INFO] [stdout] 26 ~ && ch.is_numeric() { [INFO] [stdout] 27 | end_index += 1; [INFO] [stdout] 28 | continue; [INFO] [stdout] 29 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/node/midi/cue.rs:51:25 [INFO] [stdout] | [INFO] [stdout] 51 | / if let Some(ch) = string.chars().nth(end_index) { [INFO] [stdout] 52 | | if ch.is_numeric() { [INFO] [stdout] 53 | | end_index += 1; [INFO] [stdout] 54 | | continue; [INFO] [stdout] 55 | | } [INFO] [stdout] 56 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 51 ~ if let Some(ch) = string.chars().nth(end_index) [INFO] [stdout] 52 ~ && ch.is_numeric() { [INFO] [stdout] 53 | end_index += 1; [INFO] [stdout] 54 | continue; [INFO] [stdout] 55 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `NodeRegistry` [INFO] [stdout] --> src/config/registry.rs:30:5 [INFO] [stdout] | [INFO] [stdout] 30 | / pub fn new() -> Self { [INFO] [stdout] 31 | | Self { [INFO] [stdout] 32 | | config_fns: HashMap::new(), [INFO] [stdout] 33 | | } [INFO] [stdout] 34 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 29 + impl Default for NodeRegistry { [INFO] [stdout] 30 + fn default() -> Self { [INFO] [stdout] 31 + Self::new() [INFO] [stdout] 32 + } [INFO] [stdout] 33 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: iterating on a map's values [INFO] [stdout] --> src/node/midi/mod.rs:57:13 [INFO] [stdout] | [INFO] [stdout] 57 | / self.channels [INFO] [stdout] 58 | | .iter() [INFO] [stdout] 59 | | .map(|(_, config)| config.clone()) [INFO] [stdout] | |__________________________________________________^ help: try: `self.channels.values().map(|config| config.clone())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_kv_map [INFO] [stdout] = note: `#[warn(clippy::iter_kv_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/node/midi/mod.rs:241:21 [INFO] [stdout] | [INFO] [stdout] 241 | return; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 240 - self.seek_to_anchor(anchor); [INFO] [stdout] 241 - return; [INFO] [stdout] 240 + self.seek_to_anchor(anchor); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/mix/base.rs:180:9 [INFO] [stdout] | [INFO] [stdout] 180 | / if let Some(previous_program) = self.consumer.swap_consumer(new_program) { [INFO] [stdout] 181 | | if let Some(index) = existing_placeholder_index { [INFO] [stdout] 182 | | self.program_sources [INFO] [stdout] 183 | | .insert(index, ConsumerCell::Source(previous_program)); [INFO] [stdout] 184 | | } [INFO] [stdout] 185 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 180 ~ if let Some(previous_program) = self.consumer.swap_consumer(new_program) [INFO] [stdout] 181 ~ && let Some(index) = existing_placeholder_index { [INFO] [stdout] 182 | self.program_sources [INFO] [stdout] 183 | .insert(index, ConsumerCell::Source(previous_program)); [INFO] [stdout] 184 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> examples/programs.rs:12:21 [INFO] [stdout] | [INFO] [stdout] 12 | const MIDI_0_FILE: &'static str = "resources/sample-in-c.mid"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] = note: `#[warn(clippy::redundant_static_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> examples/programs.rs:13:21 [INFO] [stdout] | [INFO] [stdout] 13 | const MIDI_1_FILE: &'static str = "resources/LoopingMidi.mid"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> examples/custom.rs:18:19 [INFO] [stdout] | [INFO] [stdout] 18 | const MIDI_FILE: &'static str = "resources/sample-in-c.mid"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] = note: `#[warn(clippy::redundant_static_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> examples/custom.rs:19:27 [INFO] [stdout] | [INFO] [stdout] 19 | const JSON_SUBTREE_FILE: &'static str = "resources/custom-example-subtree.json"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> examples/looping.rs:13:19 [INFO] [stdout] | [INFO] [stdout] 13 | const MIDI_FILE: &'static str = "resources/LoopingMidi.mid"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] = note: `#[warn(clippy::redundant_static_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> examples/chip.rs:12:19 [INFO] [stdout] | [INFO] [stdout] 12 | const MIDI_FILE: &'static str = "resources/sample-in-c.mid"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] = note: `#[warn(clippy::redundant_static_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> examples/sf2.rs:12:19 [INFO] [stdout] | [INFO] [stdout] 12 | const MIDI_FILE: &'static str = "resources/sample-in-c.mid"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] = note: `#[warn(clippy::redundant_static_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> examples/sf2.rs:13:18 [INFO] [stdout] | [INFO] [stdout] 13 | const SF2_FILE: &'static str = "resources/demo-font.sf2"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Coefficients` which implements the `Copy` trait [INFO] [stdout] --> src/node/effect/filter.rs:70:43 [INFO] [stdout] | [INFO] [stdout] 70 | left_filter: DirectForm1::new(coefficients.clone()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `coefficients` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> examples/automation.rs:17:19 [INFO] [stdout] | [INFO] [stdout] 17 | const MIDI_FILE: &'static str = "resources/MIDIGraphAutomationTest.mid"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] = note: `#[warn(clippy::redundant_static_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/node/effect/filter.rs:105:23 [INFO] [stdout] | [INFO] [stdout] 105 | self.filter = filter.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try removing the `clone` call: `filter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Coefficients` which implements the `Copy` trait [INFO] [stdout] --> src/node/effect/filter.rs:109:50 [INFO] [stdout] | [INFO] [stdout] 109 | self.left_filter.update_coefficients(coefficients.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `coefficients` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> examples/filter.rs:13:19 [INFO] [stdout] | [INFO] [stdout] 13 | const MIDI_FILE: &'static str = "resources/sample-in-c.mid"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] = note: `#[warn(clippy::redundant_static_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> examples/json.rs:6:19 [INFO] [stdout] | [INFO] [stdout] 6 | const JSON_FILE: &'static str = "resources/json-example.json"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] = note: `#[warn(clippy::redundant_static_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/node/effect/filter.rs:135:21 [INFO] [stdout] | [INFO] [stdout] 135 | filter: self.filter.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.filter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `DirectForm1` which implements the `Copy` trait [INFO] [stdout] --> src/node/effect/filter.rs:139:26 [INFO] [stdout] | [INFO] [stdout] 139 | left_filter: self.left_filter.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.left_filter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `DirectForm1` which implements the `Copy` trait [INFO] [stdout] --> src/node/effect/filter.rs:140:27 [INFO] [stdout] | [INFO] [stdout] 140 | right_filter: self.right_filter.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.right_filter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/node/effect/filter.rs:174:12 [INFO] [stdout] | [INFO] [stdout] 174 | if !self.filter.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.filter.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> examples/custom.rs:121:17 [INFO] [stdout] | [INFO] [stdout] 121 | / if note == self.current_note || event.target == EventTarget::Broadcast { [INFO] [stdout] 122 | | self.is_on = false; [INFO] [stdout] 123 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 120 ~ Event::NoteOff { note, .. } [INFO] [stdout] 121 ~ if (note == self.current_note || event.target == EventTarget::Broadcast) => { [INFO] [stdout] 122 | self.is_on = false; [INFO] [stdout] 123 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`isize` -> `isize`) [INFO] [stdout] --> src/node/effect/lfo.rs:183:36 [INFO] [stdout] | [INFO] [stdout] 183 | let mut frames_available = frames_in_buffer as isize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `frames_in_buffer` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`isize` -> `isize`) [INFO] [stdout] --> src/node/effect/lfo.rs:186:58 [INFO] [stdout] | [INFO] [stdout] 186 | let frames_to_fill = frames_left_in_step.min(frames_available as isize); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `frames_available` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`isize` -> `isize`) [INFO] [stdout] --> src/node/effect/lfo.rs:192:45 [INFO] [stdout] | [INFO] [stdout] 192 | self.frames_progress_in_step += frames_to_fill as isize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `frames_to_fill` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` branch is empty [INFO] [stdout] --> src/node/effect/lfo.rs:196:17 [INFO] [stdout] | [INFO] [stdout] 196 | if matches!(self.property, Some(ModulationProperty::PitchMultiplier)) {} [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can remove it: `matches!(self.property, Some(ModulationProperty::PitchMultiplier));` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_ifs [INFO] [stdout] = note: `#[warn(clippy::needless_ifs)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`isize` -> `isize`) [INFO] [stdout] --> src/node/effect/transition.rs:160:36 [INFO] [stdout] | [INFO] [stdout] 160 | let mut frames_available = frames_in_buffer as isize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `frames_in_buffer` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`isize` -> `isize`) [INFO] [stdout] --> src/node/effect/transition.rs:170:58 [INFO] [stdout] | [INFO] [stdout] 170 | let frames_to_fill = frames_left_in_step.min(frames_available as isize); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `frames_available` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`isize` -> `isize`) [INFO] [stdout] --> src/node/effect/transition.rs:176:45 [INFO] [stdout] | [INFO] [stdout] 176 | self.frames_progress_in_step += frames_to_fill as isize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `frames_to_fill` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/node/generator/noise.rs:158:17 [INFO] [stdout] | [INFO] [stdout] 158 | / if note == self.current_note || event.target == EventTarget::Broadcast { [INFO] [stdout] 159 | | self.is_on = false; [INFO] [stdout] 160 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 157 ~ Event::NoteOff { note, .. } [INFO] [stdout] 158 ~ if (note == self.current_note || event.target == EventTarget::Broadcast) => { [INFO] [stdout] 159 | self.is_on = false; [INFO] [stdout] 160 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/node/generator/one_shot.rs:93:13 [INFO] [stdout] | [INFO] [stdout] 93 | file_metadata.channels as usize, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `file_metadata.channels` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/node/generator/sawtooth.rs:100:17 [INFO] [stdout] | [INFO] [stdout] 100 | / if self.current_note == note || event.target == EventTarget::Broadcast { [INFO] [stdout] 101 | | self.is_on = false; [INFO] [stdout] 102 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 99 ~ Event::NoteOff { note, .. } [INFO] [stdout] 100 ~ if (self.current_note == note || event.target == EventTarget::Broadcast) => { [INFO] [stdout] 101 | self.is_on = false; [INFO] [stdout] 102 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/node/generator/square.rs:108:17 [INFO] [stdout] | [INFO] [stdout] 108 | / if note == self.current_note || event.target == EventTarget::Broadcast { [INFO] [stdout] 109 | | self.is_on = false; [INFO] [stdout] 110 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 107 ~ Event::NoteOff { note, .. } [INFO] [stdout] 108 ~ if (note == self.current_note || event.target == EventTarget::Broadcast) => { [INFO] [stdout] 109 | self.is_on = false; [INFO] [stdout] 110 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/node/generator/triangle.rs:100:17 [INFO] [stdout] | [INFO] [stdout] 100 | / if note == self.current_note || event.target == EventTarget::Broadcast { [INFO] [stdout] 101 | | self.is_on = false; [INFO] [stdout] 102 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 99 ~ Event::NoteOff { note, .. } [INFO] [stdout] 100 ~ if (note == self.current_note || event.target == EventTarget::Broadcast) => { [INFO] [stdout] 101 | self.is_on = false; [INFO] [stdout] 102 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/node/generator/wav.rs:121:9 [INFO] [stdout] | [INFO] [stdout] 121 | / Ok(Self::new( [INFO] [stdout] 122 | | node_id, [INFO] [stdout] 123 | | metadata.sample_rate, [INFO] [stdout] 124 | | metadata.channels, [INFO] [stdout] ... | [INFO] [stdout] 130 | | buffer_length, [INFO] [stdout] 131 | | )?) [INFO] [stdout] | |___________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] = note: `#[warn(clippy::needless_question_mark)]` on by default [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 121 ~ Self::new( [INFO] [stdout] 122 | node_id, [INFO] [stdout] ... [INFO] [stdout] 130 | buffer_length, [INFO] [stdout] 131 ~ ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/node/generator/wav.rs:134:5 [INFO] [stdout] | [INFO] [stdout] 134 | / pub fn new( [INFO] [stdout] 135 | | node_id: Option, [INFO] [stdout] 136 | | sample_rate: u32, [INFO] [stdout] 137 | | channels: usize, [INFO] [stdout] ... | [INFO] [stdout] 143 | | buffer_length_samples: usize, [INFO] [stdout] 144 | | ) -> Result { [INFO] [stdout] | |____________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/node/generator/wav.rs:312:17 [INFO] [stdout] | [INFO] [stdout] 312 | / if self.current_note == note && self.is_on { [INFO] [stdout] 313 | | self.is_on = false; [INFO] [stdout] 314 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 311 ~ Event::NoteOff { note, vel: _ } [INFO] [stdout] 312 ~ if self.current_note == note && self.is_on => { [INFO] [stdout] 313 | self.is_on = false; [INFO] [stdout] 314 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u64` -> `u64`) [INFO] [stdout] --> src/node/group/font.rs:158:53 [INFO] [stdout] | [INFO] [stdout] 158 | cursor.seek(SeekFrom::Start(sample_chunk_metadata.offset as u64))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `sample_chunk_metadata.offset` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/node/group/font.rs:202:25 [INFO] [stdout] | [INFO] [stdout] 202 | range.buffer_index as usize, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `range.buffer_index` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/node/group/font.rs:203:25 [INFO] [stdout] | [INFO] [stdout] 203 | range.buffer_length as usize, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `range.buffer_length` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `note` after checking its variant with `is_some` [INFO] [stdout] --> src/node/group/font.rs:314:24 [INFO] [stdout] | [INFO] [stdout] 313 | if note.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = note` [INFO] [stdout] 314 | let note = note.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/node/group/util.rs:35:9 [INFO] [stdout] | [INFO] [stdout] 35 | / if let SfEnum::Value(GeneratorType::KeyRange) = generator.ty { [INFO] [stdout] 36 | | if let GeneratorAmount::Range(range) = generator.amount { [INFO] [stdout] 37 | | return Ok(NoteRange::new_inclusive_range(range.low, range.high)); [INFO] [stdout] 38 | | } [INFO] [stdout] 39 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 35 ~ if let SfEnum::Value(GeneratorType::KeyRange) = generator.ty [INFO] [stdout] 36 ~ && let GeneratorAmount::Range(range) = generator.amount { [INFO] [stdout] 37 | return Ok(NoteRange::new_inclusive_range(range.low, range.high)); [INFO] [stdout] 38 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/node/midi/cue.rs:25:25 [INFO] [stdout] | [INFO] [stdout] 25 | / if let Some(ch) = string.chars().nth(end_index) { [INFO] [stdout] 26 | | if ch.is_numeric() { [INFO] [stdout] 27 | | end_index += 1; [INFO] [stdout] 28 | | continue; [INFO] [stdout] 29 | | } [INFO] [stdout] 30 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 25 ~ if let Some(ch) = string.chars().nth(end_index) [INFO] [stdout] 26 ~ && ch.is_numeric() { [INFO] [stdout] 27 | end_index += 1; [INFO] [stdout] 28 | continue; [INFO] [stdout] 29 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/node/midi/cue.rs:51:25 [INFO] [stdout] | [INFO] [stdout] 51 | / if let Some(ch) = string.chars().nth(end_index) { [INFO] [stdout] 52 | | if ch.is_numeric() { [INFO] [stdout] 53 | | end_index += 1; [INFO] [stdout] 54 | | continue; [INFO] [stdout] 55 | | } [INFO] [stdout] 56 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 51 ~ if let Some(ch) = string.chars().nth(end_index) [INFO] [stdout] 52 ~ && ch.is_numeric() { [INFO] [stdout] 53 | end_index += 1; [INFO] [stdout] 54 | continue; [INFO] [stdout] 55 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: iterating on a map's values [INFO] [stdout] --> src/node/midi/mod.rs:57:13 [INFO] [stdout] | [INFO] [stdout] 57 | / self.channels [INFO] [stdout] 58 | | .iter() [INFO] [stdout] 59 | | .map(|(_, config)| config.clone()) [INFO] [stdout] | |__________________________________________________^ help: try: `self.channels.values().map(|config| config.clone())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_kv_map [INFO] [stdout] = note: `#[warn(clippy::iter_kv_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/node/midi/mod.rs:241:21 [INFO] [stdout] | [INFO] [stdout] 241 | return; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 240 - self.seek_to_anchor(anchor); [INFO] [stdout] 241 - return; [INFO] [stdout] 240 + self.seek_to_anchor(anchor); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 22.51s [INFO] running `Command { std: "docker" "inspect" "3f96aceb8f73c117e64ecd7f4e01f90b83cbec82e51fec6afb1453006184ed6b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3f96aceb8f73c117e64ecd7f4e01f90b83cbec82e51fec6afb1453006184ed6b", kill_on_drop: false }` [INFO] [stdout] 3f96aceb8f73c117e64ecd7f4e01f90b83cbec82e51fec6afb1453006184ed6b