[INFO] updating cached repository https://github.com/InsidiousMind/spcp
[INFO] running `"git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "-c" "remote.origin.fetch=refs/heads/*:refs/heads/*" "fetch" "origin" "--force" "--prune"`
[INFO] running `"git" "rev-parse" "HEAD"`
[INFO] [stdout] 157a7a1567f5e8744f22876874b4df2d3b3fec8f
[INFO] checking InsidiousMind/spcp against master#bf1f2eedda4fa02b7c9347dd849ed73ddd43dedc for pr-70917
[INFO] running `"git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FInsidiousMind%2Fspcp" "/workspace/builds/worker-5/source"`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/InsidiousMind/spcp on toolchain bf1f2eedda4fa02b7c9347dd849ed73ddd43dedc
[INFO] running `"/workspace/cargo-home/bin/cargo" "+bf1f2eedda4fa02b7c9347dd849ed73ddd43dedc" "read-manifest" "--manifest-path" "Cargo.toml"`
[INFO] started tweaking git repo https://github.com/InsidiousMind/spcp
[INFO] finished tweaking git repo https://github.com/InsidiousMind/spcp
[INFO] tweaked toml for git repo https://github.com/InsidiousMind/spcp written to /workspace/builds/worker-5/source/Cargo.toml
[INFO] crate git repo https://github.com/InsidiousMind/spcp already has a lockfile, it will not be regenerated
[INFO] running `"/workspace/cargo-home/bin/cargo" "+bf1f2eedda4fa02b7c9347dd849ed73ddd43dedc" "fetch" "--locked" "--manifest-path" "Cargo.toml"`
[INFO] running `"docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5/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" "MAP_USER_ID=0" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--network" "none" "rustops/crates-build-env" "/opt/rustwide/cargo-home/bin/cargo" "+bf1f2eedda4fa02b7c9347dd849ed73ddd43dedc" "check" "--frozen" "--all" "--all-targets"`
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] [stdout] b8ed01fb20d5c78b29aa0d607c837e1500e41a7dbdcfe577e13aa2607d629677
[INFO] running `"docker" "start" "-a" "b8ed01fb20d5c78b29aa0d607c837e1500e41a7dbdcfe577e13aa2607d629677"`
[INFO] [stderr]     Checking spcp v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr] warning: lint `exceeding_bitshifts` has been renamed to `arithmetic_overflow`
[INFO] [stderr]  --> src/lib.rs:4:10
[INFO] [stderr]   |
[INFO] [stderr] 4 | #![allow(exceeding_bitshifts)]
[INFO] [stderr]   |          ^^^^^^^^^^^^^^^^^^^ help: use the new name: `arithmetic_overflow`
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(renamed_and_removed_lints)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: lint `exceeding_bitshifts` has been renamed to `arithmetic_overflow`
[INFO] [stderr]  --> src/lib.rs:4:10
[INFO] [stderr]   |
[INFO] [stderr] 4 | #![allow(exceeding_bitshifts)]
[INFO] [stderr]   |          ^^^^^^^^^^^^^^^^^^^ help: use the new name: `arithmetic_overflow`
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(renamed_and_removed_lints)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `state::State`
[INFO] [stderr]  --> src/macros.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | use state::State;
[INFO] [stderr]   |     ^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `SPC_DSP::counter_mask`
[INFO] [stderr]  --> src/macros.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use SPC_DSP::counter_mask;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: type `sample_t` should have an upper camel case name
[INFO] [stderr]  --> src/lib.rs:9:10
[INFO] [stderr]   |
[INFO] [stderr] 9 | pub type sample_t = i16;
[INFO] [stderr]   |          ^^^^^^^^ help: convert the identifier to upper camel case: `SampleT`
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(non_camel_case_types)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::ptr`
[INFO] [stderr]  --> src/SPC_DSP.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | use std::ptr;
[INFO] [stderr]   |     ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `state::NULL_U8 as NULL_U8`
[INFO] [stderr]  --> src/SPC_DSP.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 4 | use state::NULL_U8 as NULL_U8;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `macros`
[INFO] [stderr]   --> src/SPC_DSP.rs:15:5
[INFO] [stderr]    |
[INFO] [stderr] 15 | use macros;
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: type `SPC_DSP` should have an upper camel case name
[INFO] [stderr]   --> src/SPC_DSP.rs:34:12
[INFO] [stderr]    |
[INFO] [stderr] 34 | pub struct SPC_DSP {
[INFO] [stderr]    |            ^^^^^^^ help: convert the identifier to upper camel case: `SpcDsp`
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around method argument
[INFO] [stderr]   --> src/SPC_DSP.rs:97:26
[INFO] [stderr]    |
[INFO] [stderr] 97 |         self.m.set_phase((new_phase & 31)); //raises can't mutably borrow immutable field
[INFO] [stderr]    |                          ^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused label
[INFO] [stderr]    --> src/SPC_DSP.rs:115:13
[INFO] [stderr]     |
[INFO] [stderr] 115 |             'outer: loop {
[INFO] [stderr]     |             ^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_labels)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around block return value
[INFO] [stderr]    --> src/SPC_DSP.rs:211:53
[INFO] [stderr]     |
[INFO] [stderr] 211 | ...                   output = unsafe{(*fwd.wrapping_offset(0) * *_in.wrapping_offset(0))}  >> 11;
[INFO] [stderr]     |                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around block return value
[INFO] [stderr]    --> src/SPC_DSP.rs:212:54
[INFO] [stderr]     |
[INFO] [stderr] 212 | ...                   output += unsafe{(*fwd.wrapping_offset(1) * *_in.wrapping_offset(1))} >> 11;
[INFO] [stderr]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around block return value
[INFO] [stderr]    --> src/SPC_DSP.rs:213:54
[INFO] [stderr]     |
[INFO] [stderr] 213 | ...                   output += unsafe{(*rev.wrapping_offset(1) * *_in.wrapping_offset(2))} >> 11;
[INFO] [stderr]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around block return value
[INFO] [stderr]    --> src/SPC_DSP.rs:215:54
[INFO] [stderr]     |
[INFO] [stderr] 215 | ...                   output += unsafe{(*rev.wrapping_offset(0) * *_in.wrapping_offset(3))} >> 11;
[INFO] [stderr]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `config::*`
[INFO] [stderr]  --> src/voice.rs:3:5
[INFO] [stderr]   |
[INFO] [stderr] 3 | use config::*;
[INFO] [stderr]   |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around const expression
[INFO] [stderr]   --> src/voice.rs:25:25
[INFO] [stderr]    |
[INFO] [stderr] 25 |             buf: [0i64; ((Sizes::BRR_BUF_SIZE * 2) as usize)],
[INFO] [stderr]    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `macros`
[INFO] [stderr]  --> src/state.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | use macros;
[INFO] [stderr]   |     ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::ops::Add`
[INFO] [stderr]  --> src/state.rs:3:5
[INFO] [stderr]   |
[INFO] [stderr] 3 | use std::ops::Add;
[INFO] [stderr]   |     ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::ptr`
[INFO] [stderr]  --> src/state.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 4 | use std::ptr;
[INFO] [stderr]   |     ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `config::*`
[INFO] [stderr]   --> src/state.rs:10:5
[INFO] [stderr]    |
[INFO] [stderr] 10 | use config::*;
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: type `sample_t` should have an upper camel case name
[INFO] [stderr]   --> src/state.rs:18:10
[INFO] [stderr]    |
[INFO] [stderr] 18 | pub type sample_t = i16;
[INFO] [stderr]    |          ^^^^^^^^ help: convert the identifier to upper camel case: `SampleT`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `r_mvoll` should have an upper camel case name
[INFO] [stderr]  --> src/registers.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 5 |     r_mvoll = 0x0C,
[INFO] [stderr]   |     ^^^^^^^ help: convert the identifier to upper camel case: `RMvoll`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `r_mvolr` should have an upper camel case name
[INFO] [stderr]  --> src/registers.rs:6:5
[INFO] [stderr]   |
[INFO] [stderr] 6 |     r_mvolr = 0x1C,
[INFO] [stderr]   |     ^^^^^^^ help: convert the identifier to upper camel case: `RMvolr`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `r_evoll` should have an upper camel case name
[INFO] [stderr]  --> src/registers.rs:7:5
[INFO] [stderr]   |
[INFO] [stderr] 7 |     r_evoll = 0x2C,
[INFO] [stderr]   |     ^^^^^^^ help: convert the identifier to upper camel case: `REvoll`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `r_evolr` should have an upper camel case name
[INFO] [stderr]  --> src/registers.rs:8:5
[INFO] [stderr]   |
[INFO] [stderr] 8 |     r_evolr = 0x3C,
[INFO] [stderr]   |     ^^^^^^^ help: convert the identifier to upper camel case: `REvolr`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `r_kon` should have an upper camel case name
[INFO] [stderr]  --> src/registers.rs:9:5
[INFO] [stderr]   |
[INFO] [stderr] 9 |     r_kon = 0x4C,
[INFO] [stderr]   |     ^^^^^ help: convert the identifier to upper camel case: `RKon`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `r_koff` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:10:5
[INFO] [stderr]    |
[INFO] [stderr] 10 |     r_koff = 0x5C,
[INFO] [stderr]    |     ^^^^^^ help: convert the identifier to upper camel case: `RKoff`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `r_flg` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:11:5
[INFO] [stderr]    |
[INFO] [stderr] 11 |     r_flg = 0x6C,
[INFO] [stderr]    |     ^^^^^ help: convert the identifier to upper camel case: `RFlg`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `r_endx` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:12:5
[INFO] [stderr]    |
[INFO] [stderr] 12 |     r_endx = 0x7C,
[INFO] [stderr]    |     ^^^^^^ help: convert the identifier to upper camel case: `REndx`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `r_efb` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:13:5
[INFO] [stderr]    |
[INFO] [stderr] 13 |     r_efb = 0x0D,
[INFO] [stderr]    |     ^^^^^ help: convert the identifier to upper camel case: `REfb`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `r_pmon` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:14:5
[INFO] [stderr]    |
[INFO] [stderr] 14 |     r_pmon = 0x2D,
[INFO] [stderr]    |     ^^^^^^ help: convert the identifier to upper camel case: `RPmon`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `r_non` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:15:5
[INFO] [stderr]    |
[INFO] [stderr] 15 |     r_non = 0x3D,
[INFO] [stderr]    |     ^^^^^ help: convert the identifier to upper camel case: `RNon`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `r_eon` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:16:5
[INFO] [stderr]    |
[INFO] [stderr] 16 |     r_eon = 0x4D,
[INFO] [stderr]    |     ^^^^^ help: convert the identifier to upper camel case: `REon`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `r_dir` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:17:5
[INFO] [stderr]    |
[INFO] [stderr] 17 |     r_dir = 0x5D,
[INFO] [stderr]    |     ^^^^^ help: convert the identifier to upper camel case: `RDir`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `r_esa` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:18:5
[INFO] [stderr]    |
[INFO] [stderr] 18 |     r_esa = 0x6D,
[INFO] [stderr]    |     ^^^^^ help: convert the identifier to upper camel case: `REsa`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `r_edl` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:19:5
[INFO] [stderr]    |
[INFO] [stderr] 19 |     r_edl = 0x7D,
[INFO] [stderr]    |     ^^^^^ help: convert the identifier to upper camel case: `REdl`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `r_fir` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:20:5
[INFO] [stderr]    |
[INFO] [stderr] 20 |     r_fir = 0x0F, // 8 coefficients at 0x0F, 0x1F ... 0x7F
[INFO] [stderr]    |     ^^^^^ help: convert the identifier to upper camel case: `RFir`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `v_voll` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:25:5
[INFO] [stderr]    |
[INFO] [stderr] 25 |     v_voll = 0x00,
[INFO] [stderr]    |     ^^^^^^ help: convert the identifier to upper camel case: `VVoll`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `v_volr` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:26:5
[INFO] [stderr]    |
[INFO] [stderr] 26 |     v_volr = 0x01,
[INFO] [stderr]    |     ^^^^^^ help: convert the identifier to upper camel case: `VVolr`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `v_pitchl` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:27:5
[INFO] [stderr]    |
[INFO] [stderr] 27 |     v_pitchl = 0x02,
[INFO] [stderr]    |     ^^^^^^^^ help: convert the identifier to upper camel case: `VPitchl`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `v_pitchh` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:28:5
[INFO] [stderr]    |
[INFO] [stderr] 28 |     v_pitchh = 0x03,
[INFO] [stderr]    |     ^^^^^^^^ help: convert the identifier to upper camel case: `VPitchh`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `v_srcn` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:29:5
[INFO] [stderr]    |
[INFO] [stderr] 29 |     v_srcn = 0x04,
[INFO] [stderr]    |     ^^^^^^ help: convert the identifier to upper camel case: `VSrcn`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `v_adsr0` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:30:5
[INFO] [stderr]    |
[INFO] [stderr] 30 |     v_adsr0 = 0x05,
[INFO] [stderr]    |     ^^^^^^^ help: convert the identifier to upper camel case: `VAdsr0`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `v_adsr1` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:31:5
[INFO] [stderr]    |
[INFO] [stderr] 31 |     v_adsr1 = 0x06,
[INFO] [stderr]    |     ^^^^^^^ help: convert the identifier to upper camel case: `VAdsr1`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `v_gain` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:32:5
[INFO] [stderr]    |
[INFO] [stderr] 32 |     v_gain = 0x07,
[INFO] [stderr]    |     ^^^^^^ help: convert the identifier to upper camel case: `VGain`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `v_envx` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:33:5
[INFO] [stderr]    |
[INFO] [stderr] 33 |     v_envx = 0x08,
[INFO] [stderr]    |     ^^^^^^ help: convert the identifier to upper camel case: `VEnvx`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `v_outx` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:34:5
[INFO] [stderr]    |
[INFO] [stderr] 34 |     v_outx = 0x09,
[INFO] [stderr]    |     ^^^^^^ help: convert the identifier to upper camel case: `VOutx`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `env_release` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:39:5
[INFO] [stderr]    |
[INFO] [stderr] 39 |     env_release,
[INFO] [stderr]    |     ^^^^^^^^^^^ help: convert the identifier to upper camel case: `EnvRelease`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `env_attack` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:40:5
[INFO] [stderr]    |
[INFO] [stderr] 40 |     env_attack,
[INFO] [stderr]    |     ^^^^^^^^^^ help: convert the identifier to upper camel case: `EnvAttack`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `env_decay` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:41:5
[INFO] [stderr]    |
[INFO] [stderr] 41 |     env_decay,
[INFO] [stderr]    |     ^^^^^^^^^ help: convert the identifier to upper camel case: `EnvDecay`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `env_sustain` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:42:5
[INFO] [stderr]    |
[INFO] [stderr] 42 |     env_sustain,
[INFO] [stderr]    |     ^^^^^^^^^^^ help: convert the identifier to upper camel case: `EnvSustain`
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `state::State`
[INFO] [stderr]  --> src/macros.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | use state::State;
[INFO] [stderr]   |     ^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `SPC_DSP::counter_mask`
[INFO] [stderr]  --> src/macros.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use SPC_DSP::counter_mask;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: type `sample_t` should have an upper camel case name
[INFO] [stderr]  --> src/lib.rs:9:10
[INFO] [stderr]   |
[INFO] [stderr] 9 | pub type sample_t = i16;
[INFO] [stderr]   |          ^^^^^^^^ help: convert the identifier to upper camel case: `SampleT`
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(non_camel_case_types)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::ptr`
[INFO] [stderr]  --> src/SPC_DSP.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | use std::ptr;
[INFO] [stderr]   |     ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `state::NULL_U8 as NULL_U8`
[INFO] [stderr]  --> src/SPC_DSP.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 4 | use state::NULL_U8 as NULL_U8;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `macros`
[INFO] [stderr]   --> src/SPC_DSP.rs:15:5
[INFO] [stderr]    |
[INFO] [stderr] 15 | use macros;
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: type `SPC_DSP` should have an upper camel case name
[INFO] [stderr]   --> src/SPC_DSP.rs:34:12
[INFO] [stderr]    |
[INFO] [stderr] 34 | pub struct SPC_DSP {
[INFO] [stderr]    |            ^^^^^^^ help: convert the identifier to upper camel case: `SpcDsp`
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around method argument
[INFO] [stderr]   --> src/SPC_DSP.rs:97:26
[INFO] [stderr]    |
[INFO] [stderr] 97 |         self.m.set_phase((new_phase & 31)); //raises can't mutably borrow immutable field
[INFO] [stderr]    |                          ^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused label
[INFO] [stderr]    --> src/SPC_DSP.rs:115:13
[INFO] [stderr]     |
[INFO] [stderr] 115 |             'outer: loop {
[INFO] [stderr]     |             ^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_labels)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around block return value
[INFO] [stderr]    --> src/SPC_DSP.rs:211:53
[INFO] [stderr]     |
[INFO] [stderr] 211 | ...                   output = unsafe{(*fwd.wrapping_offset(0) * *_in.wrapping_offset(0))}  >> 11;
[INFO] [stderr]     |                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around block return value
[INFO] [stderr]    --> src/SPC_DSP.rs:212:54
[INFO] [stderr]     |
[INFO] [stderr] 212 | ...                   output += unsafe{(*fwd.wrapping_offset(1) * *_in.wrapping_offset(1))} >> 11;
[INFO] [stderr]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around block return value
[INFO] [stderr]    --> src/SPC_DSP.rs:213:54
[INFO] [stderr]     |
[INFO] [stderr] 213 | ...                   output += unsafe{(*rev.wrapping_offset(1) * *_in.wrapping_offset(2))} >> 11;
[INFO] [stderr]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around block return value
[INFO] [stderr]    --> src/SPC_DSP.rs:215:54
[INFO] [stderr]     |
[INFO] [stderr] 215 | ...                   output += unsafe{(*rev.wrapping_offset(0) * *_in.wrapping_offset(3))} >> 11;
[INFO] [stderr]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `config::*`
[INFO] [stderr]  --> src/voice.rs:3:5
[INFO] [stderr]   |
[INFO] [stderr] 3 | use config::*;
[INFO] [stderr]   |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around const expression
[INFO] [stderr]   --> src/voice.rs:25:25
[INFO] [stderr]    |
[INFO] [stderr] 25 |             buf: [0i64; ((Sizes::BRR_BUF_SIZE * 2) as usize)],
[INFO] [stderr]    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `macros`
[INFO] [stderr]  --> src/state.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | use macros;
[INFO] [stderr]   |     ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::ops::Add`
[INFO] [stderr]  --> src/state.rs:3:5
[INFO] [stderr]   |
[INFO] [stderr] 3 | use std::ops::Add;
[INFO] [stderr]   |     ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::ptr`
[INFO] [stderr]  --> src/state.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 4 | use std::ptr;
[INFO] [stderr]   |     ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `config::*`
[INFO] [stderr]   --> src/state.rs:10:5
[INFO] [stderr]    |
[INFO] [stderr] 10 | use config::*;
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: type `sample_t` should have an upper camel case name
[INFO] [stderr]   --> src/state.rs:18:10
[INFO] [stderr]    |
[INFO] [stderr] 18 | pub type sample_t = i16;
[INFO] [stderr]    |          ^^^^^^^^ help: convert the identifier to upper camel case: `SampleT`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `r_mvoll` should have an upper camel case name
[INFO] [stderr]  --> src/registers.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 5 |     r_mvoll = 0x0C,
[INFO] [stderr]   |     ^^^^^^^ help: convert the identifier to upper camel case: `RMvoll`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `r_mvolr` should have an upper camel case name
[INFO] [stderr]  --> src/registers.rs:6:5
[INFO] [stderr]   |
[INFO] [stderr] 6 |     r_mvolr = 0x1C,
[INFO] [stderr]   |     ^^^^^^^ help: convert the identifier to upper camel case: `RMvolr`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `r_evoll` should have an upper camel case name
[INFO] [stderr]  --> src/registers.rs:7:5
[INFO] [stderr]   |
[INFO] [stderr] 7 |     r_evoll = 0x2C,
[INFO] [stderr]   |     ^^^^^^^ help: convert the identifier to upper camel case: `REvoll`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `r_evolr` should have an upper camel case name
[INFO] [stderr]  --> src/registers.rs:8:5
[INFO] [stderr]   |
[INFO] [stderr] 8 |     r_evolr = 0x3C,
[INFO] [stderr]   |     ^^^^^^^ help: convert the identifier to upper camel case: `REvolr`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `r_kon` should have an upper camel case name
[INFO] [stderr]  --> src/registers.rs:9:5
[INFO] [stderr]   |
[INFO] [stderr] 9 |     r_kon = 0x4C,
[INFO] [stderr]   |     ^^^^^ help: convert the identifier to upper camel case: `RKon`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `r_koff` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:10:5
[INFO] [stderr]    |
[INFO] [stderr] 10 |     r_koff = 0x5C,
[INFO] [stderr]    |     ^^^^^^ help: convert the identifier to upper camel case: `RKoff`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `r_flg` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:11:5
[INFO] [stderr]    |
[INFO] [stderr] 11 |     r_flg = 0x6C,
[INFO] [stderr]    |     ^^^^^ help: convert the identifier to upper camel case: `RFlg`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `r_endx` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:12:5
[INFO] [stderr]    |
[INFO] [stderr] 12 |     r_endx = 0x7C,
[INFO] [stderr]    |     ^^^^^^ help: convert the identifier to upper camel case: `REndx`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `r_efb` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:13:5
[INFO] [stderr]    |
[INFO] [stderr] 13 |     r_efb = 0x0D,
[INFO] [stderr]    |     ^^^^^ help: convert the identifier to upper camel case: `REfb`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `r_pmon` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:14:5
[INFO] [stderr]    |
[INFO] [stderr] 14 |     r_pmon = 0x2D,
[INFO] [stderr]    |     ^^^^^^ help: convert the identifier to upper camel case: `RPmon`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `r_non` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:15:5
[INFO] [stderr]    |
[INFO] [stderr] 15 |     r_non = 0x3D,
[INFO] [stderr]    |     ^^^^^ help: convert the identifier to upper camel case: `RNon`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `r_eon` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:16:5
[INFO] [stderr]    |
[INFO] [stderr] 16 |     r_eon = 0x4D,
[INFO] [stderr]    |     ^^^^^ help: convert the identifier to upper camel case: `REon`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `r_dir` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:17:5
[INFO] [stderr]    |
[INFO] [stderr] 17 |     r_dir = 0x5D,
[INFO] [stderr]    |     ^^^^^ help: convert the identifier to upper camel case: `RDir`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `r_esa` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:18:5
[INFO] [stderr]    |
[INFO] [stderr] 18 |     r_esa = 0x6D,
[INFO] [stderr]    |     ^^^^^ help: convert the identifier to upper camel case: `REsa`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `r_edl` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:19:5
[INFO] [stderr]    |
[INFO] [stderr] 19 |     r_edl = 0x7D,
[INFO] [stderr]    |     ^^^^^ help: convert the identifier to upper camel case: `REdl`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `r_fir` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:20:5
[INFO] [stderr]    |
[INFO] [stderr] 20 |     r_fir = 0x0F, // 8 coefficients at 0x0F, 0x1F ... 0x7F
[INFO] [stderr]    |     ^^^^^ help: convert the identifier to upper camel case: `RFir`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `v_voll` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:25:5
[INFO] [stderr]    |
[INFO] [stderr] 25 |     v_voll = 0x00,
[INFO] [stderr]    |     ^^^^^^ help: convert the identifier to upper camel case: `VVoll`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `v_volr` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:26:5
[INFO] [stderr]    |
[INFO] [stderr] 26 |     v_volr = 0x01,
[INFO] [stderr]    |     ^^^^^^ help: convert the identifier to upper camel case: `VVolr`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `v_pitchl` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:27:5
[INFO] [stderr]    |
[INFO] [stderr] 27 |     v_pitchl = 0x02,
[INFO] [stderr]    |     ^^^^^^^^ help: convert the identifier to upper camel case: `VPitchl`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `v_pitchh` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:28:5
[INFO] [stderr]    |
[INFO] [stderr] 28 |     v_pitchh = 0x03,
[INFO] [stderr]    |     ^^^^^^^^ help: convert the identifier to upper camel case: `VPitchh`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `v_srcn` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:29:5
[INFO] [stderr]    |
[INFO] [stderr] 29 |     v_srcn = 0x04,
[INFO] [stderr]    |     ^^^^^^ help: convert the identifier to upper camel case: `VSrcn`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `v_adsr0` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:30:5
[INFO] [stderr]    |
[INFO] [stderr] 30 |     v_adsr0 = 0x05,
[INFO] [stderr]    |     ^^^^^^^ help: convert the identifier to upper camel case: `VAdsr0`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `v_adsr1` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:31:5
[INFO] [stderr]    |
[INFO] [stderr] 31 |     v_adsr1 = 0x06,
[INFO] [stderr]    |     ^^^^^^^ help: convert the identifier to upper camel case: `VAdsr1`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `v_gain` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:32:5
[INFO] [stderr]    |
[INFO] [stderr] 32 |     v_gain = 0x07,
[INFO] [stderr]    |     ^^^^^^ help: convert the identifier to upper camel case: `VGain`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `v_envx` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:33:5
[INFO] [stderr]    |
[INFO] [stderr] 33 |     v_envx = 0x08,
[INFO] [stderr]    |     ^^^^^^ help: convert the identifier to upper camel case: `VEnvx`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `v_outx` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:34:5
[INFO] [stderr]    |
[INFO] [stderr] 34 |     v_outx = 0x09,
[INFO] [stderr]    |     ^^^^^^ help: convert the identifier to upper camel case: `VOutx`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `env_release` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:39:5
[INFO] [stderr]    |
[INFO] [stderr] 39 |     env_release,
[INFO] [stderr]    |     ^^^^^^^^^^^ help: convert the identifier to upper camel case: `EnvRelease`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `env_attack` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:40:5
[INFO] [stderr]    |
[INFO] [stderr] 40 |     env_attack,
[INFO] [stderr]    |     ^^^^^^^^^^ help: convert the identifier to upper camel case: `EnvAttack`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `env_decay` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:41:5
[INFO] [stderr]    |
[INFO] [stderr] 41 |     env_decay,
[INFO] [stderr]    |     ^^^^^^^^^ help: convert the identifier to upper camel case: `EnvDecay`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `env_sustain` should have an upper camel case name
[INFO] [stderr]   --> src/registers.rs:42:5
[INFO] [stderr]    |
[INFO] [stderr] 42 |     env_sustain,
[INFO] [stderr]    |     ^^^^^^^^^^^ help: convert the identifier to upper camel case: `EnvSustain`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `i`
[INFO] [stderr]   --> src/SPC_DSP.rs:81:17
[INFO] [stderr]    |
[INFO] [stderr] 81 |         let mut i:i64;
[INFO] [stderr]    |                 ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `break_outer`
[INFO] [stderr]   --> src/SPC_DSP.rs:94:13
[INFO] [stderr]    |
[INFO] [stderr] 94 |         let break_outer: bool = true;
[INFO] [stderr]    |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_break_outer`
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `mvoll` is never read
[INFO] [stderr]    --> src/SPC_DSP.rs:112:13
[INFO] [stderr]     |
[INFO] [stderr] 112 |             mvoll = -mvoll;
[INFO] [stderr]     |             ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr] 
[INFO] [stderr] warning: variable `main_out_l` is assigned to, but never used
[INFO] [stderr]    --> src/SPC_DSP.rs:135:25
[INFO] [stderr]     |
[INFO] [stderr] 135 |                 let mut main_out_l = 0;
[INFO] [stderr]     |                         ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: consider using `_main_out_l` instead
[INFO] [stderr] 
[INFO] [stderr] warning: variable `main_out_r` is assigned to, but never used
[INFO] [stderr]    --> src/SPC_DSP.rs:136:25
[INFO] [stderr]     |
[INFO] [stderr] 136 |                 let mut main_out_r = 0;
[INFO] [stderr]     |                         ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: consider using `_main_out_r` instead
[INFO] [stderr] 
[INFO] [stderr] warning: variable `echo_out_l` is assigned to, but never used
[INFO] [stderr]    --> src/SPC_DSP.rs:137:25
[INFO] [stderr]     |
[INFO] [stderr] 137 |                 let mut echo_out_l = 0;
[INFO] [stderr]     |                         ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: consider using `_echo_out_l` instead
[INFO] [stderr] 
[INFO] [stderr] warning: variable `echo_out_r` is assigned to, but never used
[INFO] [stderr]    --> src/SPC_DSP.rs:138:25
[INFO] [stderr]     |
[INFO] [stderr] 138 |                 let mut echo_out_r = 0;
[INFO] [stderr]     |                         ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: consider using `_echo_out_r` instead
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `pitch` is never read
[INFO] [stderr]    --> src/SPC_DSP.rs:158:25
[INFO] [stderr]     |
[INFO] [stderr] 158 |                         pitch += ((pmon_input >> 5) * pitch) >> 10;
[INFO] [stderr]     |                         ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `pitch` is never read
[INFO] [stderr]    --> src/SPC_DSP.rs:181:25
[INFO] [stderr]     |
[INFO] [stderr] 181 |                         pitch = 0;
[INFO] [stderr]     |                         ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `v_regs`
[INFO] [stderr]    --> src/SPC_DSP.rs:340:21
[INFO] [stderr]     |
[INFO] [stderr] 340 |                 let v_regs = &mut self.m.regs[vreg_start..Sizes::REGISTER_COUNT];
[INFO] [stderr]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_v_regs`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/SPC_DSP.rs:142:21
[INFO] [stderr]     |
[INFO] [stderr] 142 |                 let mut v_regs = &mut self.m.regs[vreg_start..Sizes::REGISTER_COUNT];
[INFO] [stderr]     |                     ----^^^^^^
[INFO] [stderr]     |                     |
[INFO] [stderr]     |                     help: remove this `mut`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/SPC_DSP.rs:192:33
[INFO] [stderr]     |
[INFO] [stderr] 192 | ...                   let mut offset: isize = (v.interp_pos >> (3 & 0x1FE)) as isize;
[INFO] [stderr]     |                           ----^^^^^^
[INFO] [stderr]     |                           |
[INFO] [stderr]     |                           help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/SPC_DSP.rs:294:37
[INFO] [stderr]     |
[INFO] [stderr] 294 | ...                   let mut mode: i...
[INFO] [stderr]     |                           ----^^^^
[INFO] [stderr]     |                           |
[INFO] [stderr]     |                           help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] error[E0503]: cannot use `self.m.regs` because it was mutably borrowed
[INFO] [stderr]    --> src/SPC_DSP.rs:157:26
[INFO] [stderr]     |
[INFO] [stderr] 142 |                 let mut v_regs = &mut self.m.regs[vreg_start..Sizes::REGISTER_COUNT];
[INFO] [stderr]     |                                       ----------- borrow of `self.m.regs` occurs here
[INFO] [stderr] ...
[INFO] [stderr] 157 |                     if ((self.m.regs[reg!(pmon)] as i64) & vbit) != 0 {
[INFO] [stderr]     |                          ^^^^^^^^^^^^^^^^^^^^^^^ use of borrowed `self.m.regs`
[INFO] [stderr] ...
[INFO] [stderr] 188 |                         v_regs[vreg!(envx)] = (env >> 4) as u8;
[INFO] [stderr]     |                         ------------------- borrow later used here
[INFO] [stderr] 
[INFO] [stderr] error[E0503]: cannot use `self.m.regs[_]` because it was mutably borrowed
[INFO] [stderr]    --> src/SPC_DSP.rs:157:26
[INFO] [stderr]     |
[INFO] [stderr] 142 |                 let mut v_regs = &mut self.m.regs[vreg_start..Sizes::REGISTER_COUNT];
[INFO] [stderr]     |                                       ----------- borrow of `self.m.regs` occurs here
[INFO] [stderr] ...
[INFO] [stderr] 157 |                     if ((self.m.regs[reg!(pmon)] as i64) & vbit) != 0 {
[INFO] [stderr]     |                          ^^^^^^^^^^^^^^^^^^^^^^^ use of borrowed `self.m.regs`
[INFO] [stderr] ...
[INFO] [stderr] 188 |                         v_regs[vreg!(envx)] = (env >> 4) as u8;
[INFO] [stderr]     |                         ------------------- borrow later used here
[INFO] [stderr] 
[INFO] [stderr] error[E0503]: cannot use `self.m.regs` because it was mutably borrowed
[INFO] [stderr]    --> src/SPC_DSP.rs:210:38
[INFO] [stderr]     |
[INFO] [stderr] 142 |                 let mut v_regs = &mut self.m.regs[vreg_start..Sizes::REGISTER_COUNT];
[INFO] [stderr]     |                                       ----------- borrow of `self.m.regs` occurs here
[INFO] [stderr] ...
[INFO] [stderr] 210 |                                 if ((self.m.regs[reg!(non)] as i64) & vbit) == 0 {
[INFO] [stderr]     |                                      ^^^^^^^^^^^^^^^^^^^^^^ use of borrowed `self.m.regs`
[INFO] [stderr] ...
[INFO] [stderr] 235 |                         v_regs[vreg!(outx)] = (output >> 8) as u8;
[INFO] [stderr]     |                         ------------------- borrow later used here
[INFO] [stderr] 
[INFO] [stderr] error[E0503]: cannot use `self.m.regs[_]` because it was mutably borrowed
[INFO] [stderr]    --> src/SPC_DSP.rs:210:38
[INFO] [stderr]     |
[INFO] [stderr] 142 |                 let mut v_regs = &mut self.m.regs[vreg_start..Sizes::REGISTER_COUNT];
[INFO] [stderr]     |                                       ----------- borrow of `self.m.regs` occurs here
[INFO] [stderr] ...
[INFO] [stderr] 210 |                                 if ((self.m.regs[reg!(non)] as i64) & vbit) == 0 {
[INFO] [stderr]     |                                      ^^^^^^^^^^^^^^^^^^^^^^ use of borrowed `self.m.regs`
[INFO] [stderr] ...
[INFO] [stderr] 235 |                         v_regs[vreg!(outx)] = (output >> 8) as u8;
[INFO] [stderr]     |                         ------------------- borrow later used here
[INFO] [stderr] 
[INFO] [stderr] error[E0503]: cannot use `self.m.regs` because it was mutably borrowed
[INFO] [stderr]    --> src/SPC_DSP.rs:229:34
[INFO] [stderr]     |
[INFO] [stderr] 142 |                 let mut v_regs = &mut self.m.regs[vreg_start..Sizes::REGISTER_COUNT];
[INFO] [stderr]     |                                       ----------- borrow of `self.m.regs` occurs here
[INFO] [stderr] ...
[INFO] [stderr] 229 |                             if ((self.m.regs[reg!(eon)] as i64) & vbit) != 0 {
[INFO] [stderr]     |                                  ^^^^^^^^^^^^^^^^^^^^^^ use of borrowed `self.m.regs`
[INFO] [stderr] ...
[INFO] [stderr] 235 |                         v_regs[vreg!(outx)] = (output >> 8) as u8;
[INFO] [stderr]     |                         ------------------- borrow later used here
[INFO] [stderr] 
[INFO] [stderr] error[E0503]: cannot use `self.m.regs[_]` because it was mutably borrowed
[INFO] [stderr]    --> src/SPC_DSP.rs:229:34
[INFO] [stderr]     |
[INFO] [stderr] 142 |                 let mut v_regs = &mut self.m.regs[vreg_start..Sizes::REGISTER_COUNT];
[INFO] [stderr]     |                                       ----------- borrow of `self.m.regs` occurs here
[INFO] [stderr] ...
[INFO] [stderr] 229 |                             if ((self.m.regs[reg!(eon)] as i64) & vbit) != 0 {
[INFO] [stderr]     |                                  ^^^^^^^^^^^^^^^^^^^^^^ use of borrowed `self.m.regs`
[INFO] [stderr] ...
[INFO] [stderr] 235 |                         v_regs[vreg!(outx)] = (output >> 8) as u8;
[INFO] [stderr]     |                         ------------------- borrow later used here
[INFO] [stderr] 
[INFO] [stderr] error[E0503]: cannot use `self.m.regs` because it was mutably borrowed
[INFO] [stderr]    --> src/SPC_DSP.rs:239:25
[INFO] [stderr]     |
[INFO] [stderr] 142 |                 let mut v_regs = &mut self.m.regs[vreg_start..Sizes::REGISTER_COUNT];
[INFO] [stderr]     |                                       ----------- borrow of `self.m.regs` occurs here
[INFO] [stderr] ...
[INFO] [stderr] 239 |                     if ((self.m.regs[reg!(flg)]) & 0x80 != 0) || ((brr_header & 3) == 1) {
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^ use of borrowed `self.m.regs`
[INFO] [stderr] ...
[INFO] [stderr] 269 |                             let adsr0: i64 = v_regs[vreg!(adsr0)] as i64;
[INFO] [stderr]     |                                              -------------------- borrow later used here
[INFO] [stderr] 
[INFO] [stderr] error[E0503]: cannot use `self.m.regs[_]` because it was mutably borrowed
[INFO] [stderr]    --> src/SPC_DSP.rs:239:25
[INFO] [stderr]     |
[INFO] [stderr] 142 |                 let mut v_regs = &mut self.m.regs[vreg_start..Sizes::REGISTER_COUNT];
[INFO] [stderr]     |                                       ----------- borrow of `self.m.regs` occurs here
[INFO] [stderr] ...
[INFO] [stderr] 239 |                     if ((self.m.regs[reg!(flg)]) & 0x80 != 0) || ((brr_header & 3) == 1) {
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^ use of borrowed `self.m.regs`
[INFO] [stderr] ...
[INFO] [stderr] 269 |                             let adsr0: i64 = v_regs[vreg!(adsr0)] as i64;
[INFO] [stderr]     |                                              -------------------- borrow later used here
[INFO] [stderr] 
[INFO] [stderr] error[E0503]: cannot use `self.m.regs` because it was mutably borrowed
[INFO] [stderr]    --> src/SPC_DSP.rs:254:29
[INFO] [stderr]     |
[INFO] [stderr] 142 |                 let mut v_regs = &mut self.m.regs[vreg_start..Sizes::REGISTER_COUNT];
[INFO] [stderr]     |                                       ----------- borrow of `self.m.regs` occurs here
[INFO] [stderr] ...
[INFO] [stderr] 254 |                             self.m.regs[reg!(endx)] &= !vbit as u8;
[INFO] [stderr]     |                             ^^^^^^^^^^^^^^^^^^^^^^^ use of borrowed `self.m.regs`
[INFO] [stderr] ...
[INFO] [stderr] 269 |                             let adsr0: i64 = v_regs[vreg!(adsr0)] as i64;
[INFO] [stderr]     |                                              -------------------- borrow later used here
[INFO] [stderr] 
[INFO] [stderr] error[E0503]: cannot use `self.m.regs[_]` because it was mutably borrowed
[INFO] [stderr]    --> src/SPC_DSP.rs:254:29
[INFO] [stderr]     |
[INFO] [stderr] 142 |                 let mut v_regs = &mut self.m.regs[vreg_start..Sizes::REGISTER_COUNT];
[INFO] [stderr]     |                                       ----------- borrow of `self.m.regs` occurs here
[INFO] [stderr] ...
[INFO] [stderr] 254 |                             self.m.regs[reg!(endx)] &= !vbit as u8;
[INFO] [stderr]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ use of borrowed `self.m.regs`
[INFO] [stderr] ...
[INFO] [stderr] 269 |                             let adsr0: i64 = v_regs[vreg!(adsr0)] as i64;
[INFO] [stderr]     |                                              -------------------- borrow later used here
[INFO] [stderr] 
[INFO] [stderr] error[E0506]: cannot assign to `self.m.regs[_]` because it is borrowed
[INFO] [stderr]    --> src/SPC_DSP.rs:254:29
[INFO] [stderr]     |
[INFO] [stderr] 142 |                 let mut v_regs = &mut self.m.regs[vreg_start..Sizes::REGISTER_COUNT];
[INFO] [stderr]     |                                       ----------- borrow of `self.m.regs[_]` occurs here
[INFO] [stderr] ...
[INFO] [stderr] 254 |                             self.m.regs[reg!(endx)] &= !vbit as u8;
[INFO] [stderr]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ assignment to borrowed `self.m.regs[_]` occurs here
[INFO] [stderr] ...
[INFO] [stderr] 269 |                             let adsr0: i64 = v_regs[vreg!(adsr0)] as i64;
[INFO] [stderr]     |                                              -------------------- borrow later used here
[INFO] [stderr] 
[INFO] [stderr] error[E0499]: cannot borrow `self.m.regs` as mutable more than once at a time
[INFO] [stderr]    --> src/SPC_DSP.rs:340:35
[INFO] [stderr]     |
[INFO] [stderr] 142 |                 let mut v_regs = &mut self.m.regs[vreg_start..Sizes::REGISTER_COUNT];
[INFO] [stderr]     |                                       ----------- first mutable borrow occurs here
[INFO] [stderr] ...
[INFO] [stderr] 156 |                     let mut pitch: i64 = (v_regs[vreg!(pitchl)].to_le() & 0x3FFF) as i64;
[INFO] [stderr]     |                                           --------------------- first borrow later used here
[INFO] [stderr] ...
[INFO] [stderr] 340 |                 let v_regs = &mut self.m.regs[vreg_start..Sizes::REGISTER_COUNT];
[INFO] [stderr]     |                                   ^^^^^^^^^^^ second mutable borrow occurs here
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/state.rs:166:13
[INFO] [stderr]     |
[INFO] [stderr] 166 |         let mut n = self.counters[i as usize];
[INFO] [stderr]     |             ----^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] error: aborting due to 12 previous errors
[INFO] [stderr] 
[INFO] [stderr] Some errors have detailed explanations: E0499, E0503, E0506.
[INFO] [stderr] For more information about an error, try `rustc --explain E0499`.
[INFO] [stderr] error: could not compile `spcp`.
[INFO] [stderr] 
[INFO] [stderr] To learn more, run the command again with --verbose.
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stderr] warning: unused variable: `i`
[INFO] [stderr]   --> src/SPC_DSP.rs:81:17
[INFO] [stderr]    |
[INFO] [stderr] 81 |         let mut i:i64;
[INFO] [stderr]    |                 ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `break_outer`
[INFO] [stderr]   --> src/SPC_DSP.rs:94:13
[INFO] [stderr]    |
[INFO] [stderr] 94 |         let break_outer: bool = true;
[INFO] [stderr]    |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_break_outer`
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `mvoll` is never read
[INFO] [stderr]    --> src/SPC_DSP.rs:112:13
[INFO] [stderr]     |
[INFO] [stderr] 112 |             mvoll = -mvoll;
[INFO] [stderr]     |             ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr] 
[INFO] [stderr] warning: variable `main_out_l` is assigned to, but never used
[INFO] [stderr]    --> src/SPC_DSP.rs:135:25
[INFO] [stderr]     |
[INFO] [stderr] 135 |                 let mut main_out_l = 0;
[INFO] [stderr]     |                         ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: consider using `_main_out_l` instead
[INFO] [stderr] 
[INFO] [stderr] warning: variable `main_out_r` is assigned to, but never used
[INFO] [stderr]    --> src/SPC_DSP.rs:136:25
[INFO] [stderr]     |
[INFO] [stderr] 136 |                 let mut main_out_r = 0;
[INFO] [stderr]     |                         ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: consider using `_main_out_r` instead
[INFO] [stderr] 
[INFO] [stderr] warning: variable `echo_out_l` is assigned to, but never used
[INFO] [stderr]    --> src/SPC_DSP.rs:137:25
[INFO] [stderr]     |
[INFO] [stderr] 137 |                 let mut echo_out_l = 0;
[INFO] [stderr]     |                         ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: consider using `_echo_out_l` instead
[INFO] [stderr] 
[INFO] [stderr] warning: variable `echo_out_r` is assigned to, but never used
[INFO] [stderr]    --> src/SPC_DSP.rs:138:25
[INFO] [stderr]     |
[INFO] [stderr] 138 |                 let mut echo_out_r = 0;
[INFO] [stderr]     |                         ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: consider using `_echo_out_r` instead
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `pitch` is never read
[INFO] [stderr]    --> src/SPC_DSP.rs:158:25
[INFO] [stderr]     |
[INFO] [stderr] 158 |                         pitch += ((pmon_input >> 5) * pitch) >> 10;
[INFO] [stderr]     |                         ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `pitch` is never read
[INFO] [stderr]    --> src/SPC_DSP.rs:181:25
[INFO] [stderr]     |
[INFO] [stderr] 181 |                         pitch = 0;
[INFO] [stderr]     |                         ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `v_regs`
[INFO] [stderr]    --> src/SPC_DSP.rs:340:21
[INFO] [stderr]     |
[INFO] [stderr] 340 |                 let v_regs = &mut self.m.regs[vreg_start..Sizes::REGISTER_COUNT];
[INFO] [stderr]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_v_regs`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/SPC_DSP.rs:142:21
[INFO] [stderr]     |
[INFO] [stderr] 142 |                 let mut v_regs = &mut self.m.regs[vreg_start..Sizes::REGISTER_COUNT];
[INFO] [stderr]     |                     ----^^^^^^
[INFO] [stderr]     |                     |
[INFO] [stderr]     |                     help: remove this `mut`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/SPC_DSP.rs:192:33
[INFO] [stderr]     |
[INFO] [stderr] 192 | ...                   let mut offset: isize = (v.interp_pos >> (3 & 0x1FE)) as isize;
[INFO] [stderr]     |                           ----^^^^^^
[INFO] [stderr]     |                           |
[INFO] [stderr]     |                           help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/SPC_DSP.rs:294:37
[INFO] [stderr]     |
[INFO] [stderr] 294 | ...                   let mut mode: i...
[INFO] [stderr]     |                           ----^^^^
[INFO] [stderr]     |                           |
[INFO] [stderr]     |                           help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] error[E0503]: cannot use `self.m.regs` because it was mutably borrowed
[INFO] [stderr]    --> src/SPC_DSP.rs:157:26
[INFO] [stderr]     |
[INFO] [stderr] 142 |                 let mut v_regs = &mut self.m.regs[vreg_start..Sizes::REGISTER_COUNT];
[INFO] [stderr]     |                                       ----------- borrow of `self.m.regs` occurs here
[INFO] [stderr] ...
[INFO] [stderr] 157 |                     if ((self.m.regs[reg!(pmon)] as i64) & vbit) != 0 {
[INFO] [stderr]     |                          ^^^^^^^^^^^^^^^^^^^^^^^ use of borrowed `self.m.regs`
[INFO] [stderr] ...
[INFO] [stderr] 188 |                         v_regs[vreg!(envx)] = (env >> 4) as u8;
[INFO] [stderr]     |                         ------------------- borrow later used here
[INFO] [stderr] 
[INFO] [stderr] error[E0503]: cannot use `self.m.regs[_]` because it was mutably borrowed
[INFO] [stderr]    --> src/SPC_DSP.rs:157:26
[INFO] [stderr]     |
[INFO] [stderr] 142 |                 let mut v_regs = &mut self.m.regs[vreg_start..Sizes::REGISTER_COUNT];
[INFO] [stderr]     |                                       ----------- borrow of `self.m.regs` occurs here
[INFO] [stderr] ...
[INFO] [stderr] 157 |                     if ((self.m.regs[reg!(pmon)] as i64) & vbit) != 0 {
[INFO] [stderr]     |                          ^^^^^^^^^^^^^^^^^^^^^^^ use of borrowed `self.m.regs`
[INFO] [stderr] ...
[INFO] [stderr] 188 |                         v_regs[vreg!(envx)] = (env >> 4) as u8;
[INFO] [stderr]     |                         ------------------- borrow later used here
[INFO] [stderr] 
[INFO] [stderr] error[E0503]: cannot use `self.m.regs` because it was mutably borrowed
[INFO] [stderr]    --> src/SPC_DSP.rs:210:38
[INFO] [stderr]     |
[INFO] [stderr] 142 |                 let mut v_regs = &mut self.m.regs[vreg_start..Sizes::REGISTER_COUNT];
[INFO] [stderr]     |                                       ----------- borrow of `self.m.regs` occurs here
[INFO] [stderr] ...
[INFO] [stderr] 210 |                                 if ((self.m.regs[reg!(non)] as i64) & vbit) == 0 {
[INFO] [stderr]     |                                      ^^^^^^^^^^^^^^^^^^^^^^ use of borrowed `self.m.regs`
[INFO] [stderr] ...
[INFO] [stderr] 235 |                         v_regs[vreg!(outx)] = (output >> 8) as u8;
[INFO] [stderr]     |                         ------------------- borrow later used here
[INFO] [stderr] 
[INFO] [stderr] error[E0503]: cannot use `self.m.regs[_]` because it was mutably borrowed
[INFO] [stderr]    --> src/SPC_DSP.rs:210:38
[INFO] [stderr]     |
[INFO] [stderr] 142 |                 let mut v_regs = &mut self.m.regs[vreg_start..Sizes::REGISTER_COUNT];
[INFO] [stderr]     |                                       ----------- borrow of `self.m.regs` occurs here
[INFO] [stderr] ...
[INFO] [stderr] 210 |                                 if ((self.m.regs[reg!(non)] as i64) & vbit) == 0 {
[INFO] [stderr]     |                                      ^^^^^^^^^^^^^^^^^^^^^^ use of borrowed `self.m.regs`
[INFO] [stderr] ...
[INFO] [stderr] 235 |                         v_regs[vreg!(outx)] = (output >> 8) as u8;
[INFO] [stderr]     |                         ------------------- borrow later used here
[INFO] [stderr] 
[INFO] [stderr] error[E0503]: cannot use `self.m.regs` because it was mutably borrowed
[INFO] [stderr]    --> src/SPC_DSP.rs:229:34
[INFO] [stderr]     |
[INFO] [stderr] 142 |                 let mut v_regs = &mut self.m.regs[vreg_start..Sizes::REGISTER_COUNT];
[INFO] [stderr]     |                                       ----------- borrow of `self.m.regs` occurs here
[INFO] [stderr] ...
[INFO] [stderr] 229 |                             if ((self.m.regs[reg!(eon)] as i64) & vbit) != 0 {
[INFO] [stderr]     |                                  ^^^^^^^^^^^^^^^^^^^^^^ use of borrowed `self.m.regs`
[INFO] [stderr] ...
[INFO] [stderr] 235 |                         v_regs[vreg!(outx)] = (output >> 8) as u8;
[INFO] [stderr]     |                         ------------------- borrow later used here
[INFO] [stderr] 
[INFO] [stderr] error[E0503]: cannot use `self.m.regs[_]` because it was mutably borrowed
[INFO] [stderr]    --> src/SPC_DSP.rs:229:34
[INFO] [stderr]     |
[INFO] [stderr] 142 |                 let mut v_regs = &mut self.m.regs[vreg_start..Sizes::REGISTER_COUNT];
[INFO] [stderr]     |                                       ----------- borrow of `self.m.regs` occurs here
[INFO] [stderr] ...
[INFO] [stderr] 229 |                             if ((self.m.regs[reg!(eon)] as i64) & vbit) != 0 {
[INFO] [stderr]     |                                  ^^^^^^^^^^^^^^^^^^^^^^ use of borrowed `self.m.regs`
[INFO] [stderr] ...
[INFO] [stderr] 235 |                         v_regs[vreg!(outx)] = (output >> 8) as u8;
[INFO] [stderr]     |                         ------------------- borrow later used here
[INFO] [stderr] 
[INFO] [stderr] error[E0503]: cannot use `self.m.regs` because it was mutably borrowed
[INFO] [stderr]    --> src/SPC_DSP.rs:239:25
[INFO] [stderr]     |
[INFO] [stderr] 142 |                 let mut v_regs = &mut self.m.regs[vreg_start..Sizes::REGISTER_COUNT];
[INFO] [stderr]     |                                       ----------- borrow of `self.m.regs` occurs here
[INFO] [stderr] ...
[INFO] [stderr] 239 |                     if ((self.m.regs[reg!(flg)]) & 0x80 != 0) || ((brr_header & 3) == 1) {
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^ use of borrowed `self.m.regs`
[INFO] [stderr] ...
[INFO] [stderr] 269 |                             let adsr0: i64 = v_regs[vreg!(adsr0)] as i64;
[INFO] [stderr]     |                                              -------------------- borrow later used here
[INFO] [stderr] 
[INFO] [stderr] error[E0503]: cannot use `self.m.regs[_]` because it was mutably borrowed
[INFO] [stderr]    --> src/SPC_DSP.rs:239:25
[INFO] [stderr]     |
[INFO] [stderr] 142 |                 let mut v_regs = &mut self.m.regs[vreg_start..Sizes::REGISTER_COUNT];
[INFO] [stderr]     |                                       ----------- borrow of `self.m.regs` occurs here
[INFO] [stderr] ...
[INFO] [stderr] 239 |                     if ((self.m.regs[reg!(flg)]) & 0x80 != 0) || ((brr_header & 3) == 1) {
[INFO] [stderr]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^ use of borrowed `self.m.regs`
[INFO] [stderr] ...
[INFO] [stderr] 269 |                             let adsr0: i64 = v_regs[vreg!(adsr0)] as i64;
[INFO] [stderr]     |                                              -------------------- borrow later used here
[INFO] [stderr] 
[INFO] [stderr] error[E0503]: cannot use `self.m.regs` because it was mutably borrowed
[INFO] [stderr]    --> src/SPC_DSP.rs:254:29
[INFO] [stderr]     |
[INFO] [stderr] 142 |                 let mut v_regs = &mut self.m.regs[vreg_start..Sizes::REGISTER_COUNT];
[INFO] [stderr]     |                                       ----------- borrow of `self.m.regs` occurs here
[INFO] [stderr] ...
[INFO] [stderr] 254 |                             self.m.regs[reg!(endx)] &= !vbit as u8;
[INFO] [stderr]     |                             ^^^^^^^^^^^^^^^^^^^^^^^ use of borrowed `self.m.regs`
[INFO] [stderr] ...
[INFO] [stderr] 269 |                             let adsr0: i64 = v_regs[vreg!(adsr0)] as i64;
[INFO] [stderr]     |                                              -------------------- borrow later used here
[INFO] [stderr] 
[INFO] [stderr] error[E0503]: cannot use `self.m.regs[_]` because it was mutably borrowed
[INFO] [stderr]    --> src/SPC_DSP.rs:254:29
[INFO] [stderr]     |
[INFO] [stderr] 142 |                 let mut v_regs = &mut self.m.regs[vreg_start..Sizes::REGISTER_COUNT];
[INFO] [stderr]     |                                       ----------- borrow of `self.m.regs` occurs here
[INFO] [stderr] ...
[INFO] [stderr] 254 |                             self.m.regs[reg!(endx)] &= !vbit as u8;
[INFO] [stderr]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ use of borrowed `self.m.regs`
[INFO] [stderr] ...
[INFO] [stderr] 269 |                             let adsr0: i64 = v_regs[vreg!(adsr0)] as i64;
[INFO] [stderr]     |                                              -------------------- borrow later used here
[INFO] [stderr] 
[INFO] [stderr] error[E0506]: cannot assign to `self.m.regs[_]` because it is borrowed
[INFO] [stderr]    --> src/SPC_DSP.rs:254:29
[INFO] [stderr]     |
[INFO] [stderr] 142 |                 let mut v_regs = &mut self.m.regs[vreg_start..Sizes::REGISTER_COUNT];
[INFO] [stderr]     |                                       ----------- borrow of `self.m.regs[_]` occurs here
[INFO] [stderr] ...
[INFO] [stderr] 254 |                             self.m.regs[reg!(endx)] &= !vbit as u8;
[INFO] [stderr]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ assignment to borrowed `self.m.regs[_]` occurs here
[INFO] [stderr] ...
[INFO] [stderr] 269 |                             let adsr0: i64 = v_regs[vreg!(adsr0)] as i64;
[INFO] [stderr]     |                                              -------------------- borrow later used here
[INFO] [stderr] 
[INFO] [stderr] error[E0499]: cannot borrow `self.m.regs` as mutable more than once at a time
[INFO] [stderr]    --> src/SPC_DSP.rs:340:35
[INFO] [stderr]     |
[INFO] [stderr] 142 |                 let mut v_regs = &mut self.m.regs[vreg_start..Sizes::REGISTER_COUNT];
[INFO] [stderr]     |                                       ----------- first mutable borrow occurs here
[INFO] [stderr] ...
[INFO] [stderr] 156 |                     let mut pitch: i64 = (v_regs[vreg!(pitchl)].to_le() & 0x3FFF) as i64;
[INFO] [stderr]     |                                           --------------------- first borrow later used here
[INFO] [stderr] ...
[INFO] [stderr] 340 |                 let v_regs = &mut self.m.regs[vreg_start..Sizes::REGISTER_COUNT];
[INFO] [stderr]     |                                   ^^^^^^^^^^^ second mutable borrow occurs here
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/state.rs:166:13
[INFO] [stderr]     |
[INFO] [stderr] 166 |         let mut n = self.counters[i as usize];
[INFO] [stderr]     |             ----^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] error: aborting due to 12 previous errors
[INFO] [stderr] 
[INFO] [stderr] Some errors have detailed explanations: E0499, E0503, E0506.
[INFO] [stderr] For more information about an error, try `rustc --explain E0499`.
[INFO] [stderr] error: could not compile `spcp`.
[INFO] [stderr] 
[INFO] [stderr] To learn more, run the command again with --verbose.
[INFO] running `"docker" "inspect" "b8ed01fb20d5c78b29aa0d607c837e1500e41a7dbdcfe577e13aa2607d629677"`
[INFO] running `"docker" "rm" "-f" "b8ed01fb20d5c78b29aa0d607c837e1500e41a7dbdcfe577e13aa2607d629677"`
[INFO] [stdout] b8ed01fb20d5c78b29aa0d607c837e1500e41a7dbdcfe577e13aa2607d629677
