[INFO] crate wmidi 1.1.0 is already in cache [INFO] extracting crate wmidi 1.1.0 into work/ex/clippy-test-run/sources/stable/reg/wmidi/1.1.0 [INFO] extracting crate wmidi 1.1.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/wmidi/1.1.0 [INFO] validating manifest of wmidi-1.1.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 wmidi-1.1.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 wmidi-1.1.0 [INFO] finished frobbing wmidi-1.1.0 [INFO] frobbed toml for wmidi-1.1.0 written to work/ex/clippy-test-run/sources/stable/reg/wmidi/1.1.0/Cargo.toml [INFO] started frobbing wmidi-1.1.0 [INFO] finished frobbing wmidi-1.1.0 [INFO] frobbed toml for wmidi-1.1.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/wmidi/1.1.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 wmidi-1.1.0 against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/wmidi/1.1.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 -Dclippy::into_iter_on_array" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 128274fca2143a85350be6b6cb49aa2c7d13f4539bf5fbfd205605f170c3ee5d [INFO] running `"docker" "start" "-a" "128274fca2143a85350be6b6cb49aa2c7d13f4539bf5fbfd205605f170c3ee5d"` [INFO] [stderr] Checking wmidi v1.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:193:9 [INFO] [stderr] | [INFO] [stderr] 193 | / match self { [INFO] [stderr] 194 | | &MidiMessage::NoteOff(..) => 3, [INFO] [stderr] 195 | | &MidiMessage::NoteOn(..) => 3, [INFO] [stderr] 196 | | &MidiMessage::PolyphonicKeyPressure(..) => 3, [INFO] [stderr] ... | [INFO] [stderr] 212 | | &MidiMessage::Reset => 1, [INFO] [stderr] 213 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 193 | match *self { [INFO] [stderr] 194 | MidiMessage::NoteOff(..) => 3, [INFO] [stderr] 195 | MidiMessage::NoteOn(..) => 3, [INFO] [stderr] 196 | MidiMessage::PolyphonicKeyPressure(..) => 3, [INFO] [stderr] 197 | MidiMessage::ControlChange(..) => 3, [INFO] [stderr] 198 | MidiMessage::ProgramChange(..) => 2, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:219:9 [INFO] [stderr] | [INFO] [stderr] 219 | / match self { [INFO] [stderr] 220 | | &MidiMessage::NoteOff(c, ..) => Some(c), [INFO] [stderr] 221 | | &MidiMessage::NoteOn(c, ..) => Some(c), [INFO] [stderr] 222 | | &MidiMessage::PolyphonicKeyPressure(c, ..) => Some(c), [INFO] [stderr] ... | [INFO] [stderr] 227 | | _ => None, [INFO] [stderr] 228 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 219 | match *self { [INFO] [stderr] 220 | MidiMessage::NoteOff(c, ..) => Some(c), [INFO] [stderr] 221 | MidiMessage::NoteOn(c, ..) => Some(c), [INFO] [stderr] 222 | MidiMessage::PolyphonicKeyPressure(c, ..) => Some(c), [INFO] [stderr] 223 | MidiMessage::ControlChange(c, ..) => Some(c), [INFO] [stderr] 224 | MidiMessage::ProgramChange(c, ..) => Some(c), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:233:9 [INFO] [stderr] | [INFO] [stderr] 233 | / match self { [INFO] [stderr] 234 | | &MidiMessage::NoteOff(a, b, c) => w.write(&[0x80 | a.index(), b, c]), [INFO] [stderr] 235 | | &MidiMessage::NoteOn(a, b, c) => w.write(&[0x90 | a.index(), b, c]), [INFO] [stderr] 236 | | &MidiMessage::PolyphonicKeyPressure(a, b, c) => w.write(&[0xA0 | a.index(), b, c]), [INFO] [stderr] ... | [INFO] [stderr] 262 | | &MidiMessage::Reset => w.write(&[0xFF]), [INFO] [stderr] 263 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 233 | match *self { [INFO] [stderr] 234 | MidiMessage::NoteOff(a, b, c) => w.write(&[0x80 | a.index(), b, c]), [INFO] [stderr] 235 | MidiMessage::NoteOn(a, b, c) => w.write(&[0x90 | a.index(), b, c]), [INFO] [stderr] 236 | MidiMessage::PolyphonicKeyPressure(a, b, c) => w.write(&[0xA0 | a.index(), b, c]), [INFO] [stderr] 237 | MidiMessage::ControlChange(a, b, c) => w.write(&[0xB0 | a.index(), b, c]), [INFO] [stderr] 238 | MidiMessage::ProgramChange(a, b) => w.write(&[0xC0 | a.index(), b]), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/lib.rs:241:17 [INFO] [stderr] | [INFO] [stderr] 241 | w.write(&[0xE0 | a.index()])?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/lib.rs:245:17 [INFO] [stderr] | [INFO] [stderr] 245 | w.write(&[0xF0])?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/lib.rs:246:17 [INFO] [stderr] | [INFO] [stderr] 246 | w.write(b)?; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/lib.rs:251:17 [INFO] [stderr] | [INFO] [stderr] 251 | w.write(&[0xF2])?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:269:9 [INFO] [stderr] | [INFO] [stderr] 269 | / match self { [INFO] [stderr] 270 | | &mut MidiMessage::NoteOff(a, b, c) => buf.write(&[0x80 | a.index(), b, c]), [INFO] [stderr] 271 | | &mut MidiMessage::NoteOn(a, b, c) => buf.write(&[0x90 | a.index(), b, c]), [INFO] [stderr] 272 | | &mut MidiMessage::PolyphonicKeyPressure(a, b, c) => buf.write(&[0xA0 | a.index(), b, c]), [INFO] [stderr] ... | [INFO] [stderr] 298 | | &mut MidiMessage::Reset => buf.write(&[0xFF]), [INFO] [stderr] 299 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 269 | match *self { [INFO] [stderr] 270 | MidiMessage::NoteOff(a, b, c) => buf.write(&[0x80 | a.index(), b, c]), [INFO] [stderr] 271 | MidiMessage::NoteOn(a, b, c) => buf.write(&[0x90 | a.index(), b, c]), [INFO] [stderr] 272 | MidiMessage::PolyphonicKeyPressure(a, b, c) => buf.write(&[0xA0 | a.index(), b, c]), [INFO] [stderr] 273 | MidiMessage::ControlChange(a, b, c) => buf.write(&[0xB0 | a.index(), b, c]), [INFO] [stderr] 274 | MidiMessage::ProgramChange(a, b) => buf.write(&[0xC0 | a.index(), b]), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/lib.rs:277:17 [INFO] [stderr] | [INFO] [stderr] 277 | buf.write(&[0xE0 | a.index()])?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/lib.rs:281:17 [INFO] [stderr] | [INFO] [stderr] 281 | buf.write(&[0xF0])?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/lib.rs:282:17 [INFO] [stderr] | [INFO] [stderr] 282 | buf.write(b)?; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/lib.rs:287:17 [INFO] [stderr] | [INFO] [stderr] 287 | buf.write(&[0xF2])?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib.rs:410:18 [INFO] [stderr] | [INFO] [stderr] 410 | pub fn index(&self) -> u8 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:411:9 [INFO] [stderr] | [INFO] [stderr] 411 | / match self { [INFO] [stderr] 412 | | &Channel::Ch1 => 0, [INFO] [stderr] 413 | | &Channel::Ch2 => 1, [INFO] [stderr] 414 | | &Channel::Ch3 => 2, [INFO] [stderr] ... | [INFO] [stderr] 427 | | &Channel::Ch16 => 15, [INFO] [stderr] 428 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 411 | match *self { [INFO] [stderr] 412 | Channel::Ch1 => 0, [INFO] [stderr] 413 | Channel::Ch2 => 1, [INFO] [stderr] 414 | Channel::Ch3 => 2, [INFO] [stderr] 415 | Channel::Ch4 => 3, [INFO] [stderr] 416 | Channel::Ch5 => 4, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib.rs:433:19 [INFO] [stderr] | [INFO] [stderr] 433 | pub fn number(&self) -> u8 { self.index() + 1 } [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:437:49 [INFO] [stderr] | [INFO] [stderr] 437 | fn combine_data(lower: U7, higher: U7) -> U14 { (lower as U14) + 128 * (higher as U14) } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(lower)` [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 u16 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:437:72 [INFO] [stderr] | [INFO] [stderr] 437 | fn combine_data(lower: U7, higher: U7) -> U14 { (lower as U14) + 128 * (higher as U14) } [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(higher)` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib.rs:446:23 [INFO] [stderr] | [INFO] [stderr] 446 | fn valid_data_byte(b: &u8) -> Result { [INFO] [stderr] | ^^^ help: consider passing by value instead: `u8` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:447:13 [INFO] [stderr] | [INFO] [stderr] 447 | let x = b.clone(); [INFO] [stderr] | ^^^^^^^^^ help: try dereferencing it: `*b` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] error: aborting due to 8 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `wmidi`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:193:9 [INFO] [stderr] | [INFO] [stderr] 193 | / match self { [INFO] [stderr] 194 | | &MidiMessage::NoteOff(..) => 3, [INFO] [stderr] 195 | | &MidiMessage::NoteOn(..) => 3, [INFO] [stderr] 196 | | &MidiMessage::PolyphonicKeyPressure(..) => 3, [INFO] [stderr] ... | [INFO] [stderr] 212 | | &MidiMessage::Reset => 1, [INFO] [stderr] 213 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 193 | match *self { [INFO] [stderr] 194 | MidiMessage::NoteOff(..) => 3, [INFO] [stderr] 195 | MidiMessage::NoteOn(..) => 3, [INFO] [stderr] 196 | MidiMessage::PolyphonicKeyPressure(..) => 3, [INFO] [stderr] 197 | MidiMessage::ControlChange(..) => 3, [INFO] [stderr] 198 | MidiMessage::ProgramChange(..) => 2, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:219:9 [INFO] [stderr] | [INFO] [stderr] 219 | / match self { [INFO] [stderr] 220 | | &MidiMessage::NoteOff(c, ..) => Some(c), [INFO] [stderr] 221 | | &MidiMessage::NoteOn(c, ..) => Some(c), [INFO] [stderr] 222 | | &MidiMessage::PolyphonicKeyPressure(c, ..) => Some(c), [INFO] [stderr] ... | [INFO] [stderr] 227 | | _ => None, [INFO] [stderr] 228 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 219 | match *self { [INFO] [stderr] 220 | MidiMessage::NoteOff(c, ..) => Some(c), [INFO] [stderr] 221 | MidiMessage::NoteOn(c, ..) => Some(c), [INFO] [stderr] 222 | MidiMessage::PolyphonicKeyPressure(c, ..) => Some(c), [INFO] [stderr] 223 | MidiMessage::ControlChange(c, ..) => Some(c), [INFO] [stderr] 224 | MidiMessage::ProgramChange(c, ..) => Some(c), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:233:9 [INFO] [stderr] | [INFO] [stderr] 233 | / match self { [INFO] [stderr] 234 | | &MidiMessage::NoteOff(a, b, c) => w.write(&[0x80 | a.index(), b, c]), [INFO] [stderr] 235 | | &MidiMessage::NoteOn(a, b, c) => w.write(&[0x90 | a.index(), b, c]), [INFO] [stderr] 236 | | &MidiMessage::PolyphonicKeyPressure(a, b, c) => w.write(&[0xA0 | a.index(), b, c]), [INFO] [stderr] ... | [INFO] [stderr] 262 | | &MidiMessage::Reset => w.write(&[0xFF]), [INFO] [stderr] 263 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 233 | match *self { [INFO] [stderr] 234 | MidiMessage::NoteOff(a, b, c) => w.write(&[0x80 | a.index(), b, c]), [INFO] [stderr] 235 | MidiMessage::NoteOn(a, b, c) => w.write(&[0x90 | a.index(), b, c]), [INFO] [stderr] 236 | MidiMessage::PolyphonicKeyPressure(a, b, c) => w.write(&[0xA0 | a.index(), b, c]), [INFO] [stderr] 237 | MidiMessage::ControlChange(a, b, c) => w.write(&[0xB0 | a.index(), b, c]), [INFO] [stderr] 238 | MidiMessage::ProgramChange(a, b) => w.write(&[0xC0 | a.index(), b]), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/lib.rs:241:17 [INFO] [stderr] | [INFO] [stderr] 241 | w.write(&[0xE0 | a.index()])?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/lib.rs:245:17 [INFO] [stderr] | [INFO] [stderr] 245 | w.write(&[0xF0])?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/lib.rs:246:17 [INFO] [stderr] | [INFO] [stderr] 246 | w.write(b)?; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/lib.rs:251:17 [INFO] [stderr] | [INFO] [stderr] 251 | w.write(&[0xF2])?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:269:9 [INFO] [stderr] | [INFO] [stderr] 269 | / match self { [INFO] [stderr] 270 | | &mut MidiMessage::NoteOff(a, b, c) => buf.write(&[0x80 | a.index(), b, c]), [INFO] [stderr] 271 | | &mut MidiMessage::NoteOn(a, b, c) => buf.write(&[0x90 | a.index(), b, c]), [INFO] [stderr] 272 | | &mut MidiMessage::PolyphonicKeyPressure(a, b, c) => buf.write(&[0xA0 | a.index(), b, c]), [INFO] [stderr] ... | [INFO] [stderr] 298 | | &mut MidiMessage::Reset => buf.write(&[0xFF]), [INFO] [stderr] 299 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 269 | match *self { [INFO] [stderr] 270 | MidiMessage::NoteOff(a, b, c) => buf.write(&[0x80 | a.index(), b, c]), [INFO] [stderr] 271 | MidiMessage::NoteOn(a, b, c) => buf.write(&[0x90 | a.index(), b, c]), [INFO] [stderr] 272 | MidiMessage::PolyphonicKeyPressure(a, b, c) => buf.write(&[0xA0 | a.index(), b, c]), [INFO] [stderr] 273 | MidiMessage::ControlChange(a, b, c) => buf.write(&[0xB0 | a.index(), b, c]), [INFO] [stderr] 274 | MidiMessage::ProgramChange(a, b) => buf.write(&[0xC0 | a.index(), b]), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/lib.rs:277:17 [INFO] [stderr] | [INFO] [stderr] 277 | buf.write(&[0xE0 | a.index()])?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/lib.rs:281:17 [INFO] [stderr] | [INFO] [stderr] 281 | buf.write(&[0xF0])?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/lib.rs:282:17 [INFO] [stderr] | [INFO] [stderr] 282 | buf.write(b)?; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/lib.rs:287:17 [INFO] [stderr] | [INFO] [stderr] 287 | buf.write(&[0xF2])?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib.rs:410:18 [INFO] [stderr] | [INFO] [stderr] 410 | pub fn index(&self) -> u8 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:411:9 [INFO] [stderr] | [INFO] [stderr] 411 | / match self { [INFO] [stderr] 412 | | &Channel::Ch1 => 0, [INFO] [stderr] 413 | | &Channel::Ch2 => 1, [INFO] [stderr] 414 | | &Channel::Ch3 => 2, [INFO] [stderr] ... | [INFO] [stderr] 427 | | &Channel::Ch16 => 15, [INFO] [stderr] 428 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 411 | match *self { [INFO] [stderr] 412 | Channel::Ch1 => 0, [INFO] [stderr] 413 | Channel::Ch2 => 1, [INFO] [stderr] 414 | Channel::Ch3 => 2, [INFO] [stderr] 415 | Channel::Ch4 => 3, [INFO] [stderr] 416 | Channel::Ch5 => 4, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib.rs:433:19 [INFO] [stderr] | [INFO] [stderr] 433 | pub fn number(&self) -> u8 { self.index() + 1 } [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:437:49 [INFO] [stderr] | [INFO] [stderr] 437 | fn combine_data(lower: U7, higher: U7) -> U14 { (lower as U14) + 128 * (higher as U14) } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(lower)` [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 u16 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:437:72 [INFO] [stderr] | [INFO] [stderr] 437 | fn combine_data(lower: U7, higher: U7) -> U14 { (lower as U14) + 128 * (higher as U14) } [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(higher)` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib.rs:446:23 [INFO] [stderr] | [INFO] [stderr] 446 | fn valid_data_byte(b: &u8) -> Result { [INFO] [stderr] | ^^^ help: consider passing by value instead: `u8` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:447:13 [INFO] [stderr] | [INFO] [stderr] 447 | let x = b.clone(); [INFO] [stderr] | ^^^^^^^^^ help: try dereferencing it: `*b` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] error: aborting due to 8 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `wmidi`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "128274fca2143a85350be6b6cb49aa2c7d13f4539bf5fbfd205605f170c3ee5d"` [INFO] running `"docker" "rm" "-f" "128274fca2143a85350be6b6cb49aa2c7d13f4539bf5fbfd205605f170c3ee5d"` [INFO] [stdout] 128274fca2143a85350be6b6cb49aa2c7d13f4539bf5fbfd205605f170c3ee5d