[INFO] cloning repository https://github.com/gbmap/rsynth [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/gbmap/rsynth" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgbmap%2Frsynth", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgbmap%2Frsynth'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 2dff3e694ec2a03e1d3be0e18e70b40f55cab45d [INFO] checking gbmap/rsynth/2dff3e694ec2a03e1d3be0e18e70b40f55cab45d against try#ccf408f4326a858c00dd845a64a86b16f360a801 for pr-129466-2 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgbmap%2Frsynth" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/gbmap/rsynth on toolchain ccf408f4326a858c00dd845a64a86b16f360a801 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ccf408f4326a858c00dd845a64a86b16f360a801" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/gbmap/rsynth [INFO] finished tweaking git repo https://github.com/gbmap/rsynth [INFO] tweaked toml for git repo https://github.com/gbmap/rsynth written to /workspace/builds/worker-4-tc2/source/Cargo.toml [INFO] crate git repo https://github.com/gbmap/rsynth already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ccf408f4326a858c00dd845a64a86b16f360a801" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:6252d7ea7fb8caaf7af6d800c5fb250a9cd862b9a7f9508afb3c54fa7fe1102e" "/opt/rustwide/cargo-home/bin/cargo" "+ccf408f4326a858c00dd845a64a86b16f360a801" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 619915d75d1c0bca884b1488d9d4173a42711033d3475b32b397602bd24e5b23 [INFO] running `Command { std: "docker" "start" "-a" "619915d75d1c0bca884b1488d9d4173a42711033d3475b32b397602bd24e5b23", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "619915d75d1c0bca884b1488d9d4173a42711033d3475b32b397602bd24e5b23", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "619915d75d1c0bca884b1488d9d4173a42711033d3475b32b397602bd24e5b23", kill_on_drop: false }` [INFO] [stdout] 619915d75d1c0bca884b1488d9d4173a42711033d3475b32b397602bd24e5b23 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:6252d7ea7fb8caaf7af6d800c5fb250a9cd862b9a7f9508afb3c54fa7fe1102e" "/opt/rustwide/cargo-home/bin/cargo" "+ccf408f4326a858c00dd845a64a86b16f360a801" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] d87177be980d61930ec4e455b829e91c4f66b2e69cc418c57815720022259455 [INFO] running `Command { std: "docker" "start" "-a" "d87177be980d61930ec4e455b829e91c4f66b2e69cc418c57815720022259455", kill_on_drop: false }` [INFO] [stderr] Copying to /tmp/fixit [INFO] [stderr] Running `cargo fix --edition` [INFO] [stderr] Migrating Cargo.toml from 2021 edition to 2024 [INFO] [stderr] Checking smallvec v1.11.1 [INFO] [stderr] Compiling cpal v0.15.2 [INFO] [stderr] Checking bitflags v2.4.1 [INFO] [stderr] Checking dasp_sample v0.11.0 [INFO] [stderr] Compiling alsa-sys v0.3.1 [INFO] [stderr] Checking signal-hook-registry v1.4.1 [INFO] [stderr] Checking getrandom v0.2.10 [INFO] [stderr] Checking nix v0.24.3 [INFO] [stderr] Checking mio v0.8.9 [INFO] [stderr] Checking signal-hook v0.3.17 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking parking_lot_core v0.9.9 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking signal-hook-mio v0.2.3 [INFO] [stderr] Checking parking_lot v0.12.1 [INFO] [stderr] Checking alsa v0.7.1 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking crossterm v0.27.0 [INFO] [stderr] Checking rsynth v0.1.0 (/tmp/fixit) [INFO] [stderr] Migrating src/main.rs from 2021 edition to 2024 [INFO] [stderr] warning: failed to automatically apply fixes suggested by rustc to crate `rsynth` [INFO] [stderr] [INFO] [stderr] after fixes were automatically applied the compiler reported errors within these files: [INFO] [stderr] [INFO] [stderr] * src/audio/instrument.rs [INFO] [stderr] * src/audio/waves.rs [INFO] [stderr] * src/main.rs [INFO] [stderr] [INFO] [stderr] This likely indicates a bug in either rustc or cargo itself, [INFO] [stderr] and we would appreciate a bug report! You're likely to see [INFO] [stderr] a number of compiler warnings after this message which cargo [INFO] [stderr] attempted to fix but failed. If you could open an issue at [INFO] [stderr] https://github.com/rust-lang/rust/issues [INFO] [stderr] quoting the full output of this command we'd be very appreciative! [INFO] [stderr] Note that you may be able to make some more progress in the near-term [INFO] [stderr] fixing code with the `--broken-code` flag [INFO] [stderr] [INFO] [stderr] The following errors were reported: [INFO] [stderr] error[E0658]: fragment specifier `expr_2021` is unstable [INFO] [stderr] --> src/audio/waves.rs:145:30 [INFO] [stderr] | [INFO] [stderr] 145 | macro_rules! lerp { ($t:expr_2021, $a:expr_2021, $b:expr_2021) => ($a*(1.0-$t) + $b*$t) } [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: see issue #123742 for more information [INFO] [stderr] = help: add `#![feature(expr_fragment_specifier_2024)]` to the crate attributes to enable [INFO] [stderr] = note: this compiler was built on 2024-09-17; consider upgrading it if it is out of date [INFO] [stderr] [INFO] [stderr] error[E0658]: fragment specifier `expr_2021` is unstable [INFO] [stderr] --> src/audio/waves.rs:145:44 [INFO] [stderr] | [INFO] [stderr] 145 | macro_rules! lerp { ($t:expr_2021, $a:expr_2021, $b:expr_2021) => ($a*(1.0-$t) + $b*$t) } [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: see issue #123742 for more information [INFO] [stderr] = help: add `#![feature(expr_fragment_specifier_2024)]` to the crate attributes to enable [INFO] [stderr] = note: this compiler was built on 2024-09-17; consider upgrading it if it is out of date [INFO] [stderr] [INFO] [stderr] error[E0658]: fragment specifier `expr_2021` is unstable [INFO] [stderr] --> src/audio/waves.rs:145:58 [INFO] [stderr] | [INFO] [stderr] 145 | macro_rules! lerp { ($t:expr_2021, $a:expr_2021, $b:expr_2021) => ($a*(1.0-$t) + $b*$t) } [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: see issue #123742 for more information [INFO] [stderr] = help: add `#![feature(expr_fragment_specifier_2024)]` to the crate attributes to enable [INFO] [stderr] = note: this compiler was built on 2024-09-17; consider upgrading it if it is out of date [INFO] [stderr] [INFO] [stderr] error[E0658]: fragment specifier `expr_2021` is unstable [INFO] [stderr] --> src/audio/waves.rs:146:28 [INFO] [stderr] | [INFO] [stderr] 146 | macro_rules! lt { ($a:expr_2021, $b:expr_2021) => ( ($a.clamp(0.0, $b)/$b) ) } [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: see issue #123742 for more information [INFO] [stderr] = help: add `#![feature(expr_fragment_specifier_2024)]` to the crate attributes to enable [INFO] [stderr] = note: this compiler was built on 2024-09-17; consider upgrading it if it is out of date [INFO] [stderr] [INFO] [stderr] error[E0658]: fragment specifier `expr_2021` is unstable [INFO] [stderr] --> src/audio/waves.rs:146:42 [INFO] [stderr] | [INFO] [stderr] 146 | macro_rules! lt { ($a:expr_2021, $b:expr_2021) => ( ($a.clamp(0.0, $b)/$b) ) } [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: see issue #123742 for more information [INFO] [stderr] = help: add `#![feature(expr_fragment_specifier_2024)]` to the crate attributes to enable [INFO] [stderr] = note: this compiler was built on 2024-09-17; consider upgrading it if it is out of date [INFO] [stderr] [INFO] [stderr] error[E0658]: fragment specifier `expr_2021` is unstable [INFO] [stderr] --> src/audio/waves.rs:175:10 [INFO] [stderr] | [INFO] [stderr] 175 | ($a:expr_2021, $b:expr_2021) => {{ [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: see issue #123742 for more information [INFO] [stderr] = help: add `#![feature(expr_fragment_specifier_2024)]` to the crate attributes to enable [INFO] [stderr] = note: this compiler was built on 2024-09-17; consider upgrading it if it is out of date [INFO] [stderr] [INFO] [stderr] error[E0658]: fragment specifier `expr_2021` is unstable [INFO] [stderr] --> src/audio/waves.rs:175:24 [INFO] [stderr] | [INFO] [stderr] 175 | ($a:expr_2021, $b:expr_2021) => {{ [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/instrument.rs:34:32 [INFO] [stdout] | [INFO] [stdout] 34 | *sample = instrmnt.gen(i as u128); [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] = note: `--force-warn keyword-idents-2024` implied by `--force-warn rust-2024-compatibility` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] = note: see issue #123742 for more information [INFO] [stderr] = help: add `#![feature(expr_fragment_specifier_2024)]` to the crate attributes to enable [INFO] [stderr] = note: this compiler was built on 2024-09-17; consider upgrading it if it is out of date [INFO] [stderr] [INFO] [stderr] warning: unused import: `WaveGenerator` [INFO] [stderr] --> src/audio/instrument.rs:12:27 [INFO] [stderr] | [INFO] [stderr] 12 | use crate::audio::waves::{WaveGenerator, Envelope}; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `Voicing` [INFO] [stderr] --> src/audio/instrument.rs:15:54 [INFO] [stderr] | [INFO] [stderr] 15 | use super::waves::{SinWave, IdentityWave, Randomize, Voicing}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `t` [INFO] [stderr] --> src/audio/waves.rs:16:59 [INFO] [stderr] | [INFO] [stderr] 16 | impl WaveGenerator for IdentityWave { fn r#gen(&mut self, t: f32) -> f32 { 1.0 }} [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `timestamp` [INFO] [stderr] --> src/main.rs:31:71 [INFO] [stderr] | [INFO] [stderr] 31 | fn handle_key_event(&mut self, event: crossterm::event::KeyEvent, timestamp: f32) { [INFO] [stderr] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timestamp` [INFO] [stderr] [INFO] [stderr] error: aborting due to 7 previous errors; 4 warnings emitted [INFO] [stderr] [INFO] [stderr] For more information about this error, try `rustc --explain E0658`. [INFO] [stderr] Original diagnostics will follow. [INFO] [stderr] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/instrument.rs:105:12 [INFO] [stdout] | [INFO] [stdout] 105 | pub fn gen(&mut self, i: u128) -> f32 { [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/instrument.rs:113:33 [INFO] [stdout] | [INFO] [stdout] 113 | self.oscillator.gen(t, *freq)*env [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:3:30 [INFO] [stdout] | [INFO] [stdout] 3 | pub trait WaveGenerator { fn gen(&mut self, t: f32) -> f32; } [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:13:38 [INFO] [stdout] | [INFO] [stdout] 13 | impl WaveGenerator for NullWave { fn gen(&mut self, _: f32) -> f32 { 0.0 }} [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:16:42 [INFO] [stdout] | [INFO] [stdout] 16 | impl WaveGenerator for IdentityWave { fn gen(&mut self, t: f32) -> f32 { 1.0 }} [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:19:42 [INFO] [stdout] | [INFO] [stdout] 19 | impl WaveGenerator for ConstantWave { fn gen(&mut self, t: f32) -> f32 { t }} [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:22:37 [INFO] [stdout] | [INFO] [stdout] 22 | impl WaveGenerator for SinWave { fn gen(&mut self, t: f32) -> f32 { (t*std::f32::consts::FRAC_PI_2).sin() }} [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:25:40 [INFO] [stdout] | [INFO] [stdout] 25 | impl WaveGenerator for SquareWave { fn gen(&mut self, t: f32) -> f32 { if (t as i32) % 2 == 0 { 1.0 } else { -1.0 } }} [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:28:37 [INFO] [stdout] | [INFO] [stdout] 28 | impl WaveGenerator for TriWave { fn gen(&mut self, t: f32) -> f32 { (t % 2.0)-1.0 }} [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:56:41 [INFO] [stdout] | [INFO] [stdout] 56 | impl WaveGenerator for RandomWave { fn gen(&mut self, _: f32) -> f32 { self.rng.gen() } } [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:56:82 [INFO] [stdout] | [INFO] [stdout] 56 | impl WaveGenerator for RandomWave { fn gen(&mut self, _: f32) -> f32 { self.rng.gen() } } [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:60:45 [INFO] [stdout] | [INFO] [stdout] 60 | impl WaveGenerator for LinearTransform { fn gen(&mut self, t: f32) -> f32 { self.alpha.gen(t)*t + self.beta.gen(t) } } [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:60:88 [INFO] [stdout] | [INFO] [stdout] 60 | impl WaveGenerator for LinearTransform { fn gen(&mut self, t: f32) -> f32 { self.alpha.gen(t)*t + self.beta.gen(t) } } [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:60:109 [INFO] [stdout] | [INFO] [stdout] 60 | impl WaveGenerator for LinearTransform { fn gen(&mut self, t: f32) -> f32 { self.alpha.gen(t)*t + self.beta.gen(t) } } [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:69:24 [INFO] [stdout] | [INFO] [stdout] 69 | pub trait Voicing { fn gen(&self, osc: &mut Vec<&mut Oscillator>, t: f32, freq: f32) -> f32; } [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:72:35 [INFO] [stdout] | [INFO] [stdout] 72 | impl Voicing for MeanVoicing { fn gen(&self, oscs: &mut Vec<&mut Oscillator>, t: f32, freq: f32) -> f32 { [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:73:31 [INFO] [stdout] | [INFO] [stdout] 73 | oscs.iter_mut().map(|o| o.gen(t, freq)).sum::() / (oscs.len() as f32) [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:78:9 [INFO] [stdout] | [INFO] [stdout] 78 | fn gen(&self, oscs: &mut Vec<&mut Oscillator>, t: f32, freq: f32) -> f32 { [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:81:26 [INFO] [stdout] | [INFO] [stdout] 81 | total += osc.gen(t, freq); [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:84:30 [INFO] [stdout] | [INFO] [stdout] 84 | total += osc.gen(t-(self.0*i_f), freq*(self.1*i_f)); [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:85:30 [INFO] [stdout] | [INFO] [stdout] 85 | total += osc.gen(t+(self.0*i_f), freq*(1.0/(self.1*i_f))); [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:102:8 [INFO] [stdout] | [INFO] [stdout] 102 | fn gen(&mut self, t: f32, freq: f32) -> f32 { [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:103:22 [INFO] [stdout] | [INFO] [stdout] 103 | self.voicing.gen(&mut vec![&mut self.osc], t, freq) [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:117:12 [INFO] [stdout] | [INFO] [stdout] 117 | pub fn gen(&mut self, t: f32, freq: f32) -> f32 { [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:118:18 [INFO] [stdout] | [INFO] [stdout] 118 | self.otf.gen(self.ttf.gen(t)*self.wtf.gen(freq)) [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:118:31 [INFO] [stdout] | [INFO] [stdout] 118 | self.otf.gen(self.ttf.gen(t)*self.wtf.gen(freq)) [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:118:47 [INFO] [stdout] | [INFO] [stdout] 118 | self.otf.gen(self.ttf.gen(t)*self.wtf.gen(freq)) [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:159:22 [INFO] [stdout] | [INFO] [stdout] 159 | self.0 = rng.gen(); [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:160:22 [INFO] [stdout] | [INFO] [stdout] 160 | self.1 = rng.gen(); [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:161:22 [INFO] [stdout] | [INFO] [stdout] 161 | self.2 = rng.gen(); [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:162:22 [INFO] [stdout] | [INFO] [stdout] 162 | self.3 = rng.gen(); [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:200:25 [INFO] [stdout] | [INFO] [stdout] 200 | let y = rng.gen(); [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:201:33 [INFO] [stdout] | [INFO] [stdout] 201 | assert_approx_eq!(g.gen(y), y); [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:210:25 [INFO] [stdout] | [INFO] [stdout] 210 | let y = rng.gen(); [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:211:34 [INFO] [stdout] | [INFO] [stdout] 211 | assert_approx_eq!(lt.gen(y), y); [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:227:46 [INFO] [stdout] | [INFO] [stdout] 227 | assert_approx_eq!(test_generator.gen(f, 1.0), control_generator.gen(f)); [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:227:77 [INFO] [stdout] | [INFO] [stdout] 227 | assert_approx_eq!(test_generator.gen(f, 1.0), control_generator.gen(f)); [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ConstantWave` [INFO] [stdout] --> src/audio/instrument.rs:13:66 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::audio::waves::{Oscillator, LinearTransform, NullWave, ConstantWave}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `RepeatedVoicing` and `Test` [INFO] [stdout] --> src/audio/instrument.rs:15:63 [INFO] [stdout] | [INFO] [stdout] 15 | use super::waves::{SinWave, IdentityWave, Randomize, Voicing, RepeatedVoicing, Test}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:145:33 [INFO] [stdout] | [INFO] [stdout] 145 | macro_rules! lerp { ($t:expr, $a:expr, $b:expr) => ($a*(1.0-$t) + $b*$t) } [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see Migration Guide [INFO] [stdout] = note: `--force-warn edition-2024-expr-fragment-specifier` implied by `--force-warn rust-2024-compatibility` [INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier [INFO] [stdout] | [INFO] [stdout] 145 | macro_rules! lerp { ($t:expr_2021, $a:expr, $b:expr) => ($a*(1.0-$t) + $b*$t) } [INFO] [stdout] | ~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:145:42 [INFO] [stdout] | [INFO] [stdout] 145 | macro_rules! lerp { ($t:expr, $a:expr, $b:expr) => ($a*(1.0-$t) + $b*$t) } [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see Migration Guide [INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier [INFO] [stdout] | [INFO] [stdout] 145 | macro_rules! lerp { ($t:expr, $a:expr_2021, $b:expr) => ($a*(1.0-$t) + $b*$t) } [INFO] [stdout] | ~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:145:51 [INFO] [stdout] | [INFO] [stdout] 145 | macro_rules! lerp { ($t:expr, $a:expr, $b:expr) => ($a*(1.0-$t) + $b*$t) } [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see Migration Guide [INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier [INFO] [stdout] | [INFO] [stdout] 145 | macro_rules! lerp { ($t:expr, $a:expr, $b:expr_2021) => ($a*(1.0-$t) + $b*$t) } [INFO] [stdout] | ~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:146:31 [INFO] [stdout] | [INFO] [stdout] 146 | macro_rules! lt { ($a:expr, $b:expr) => ( ($a.clamp(0.0, $b)/$b) ) } [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see Migration Guide [INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier [INFO] [stdout] | [INFO] [stdout] 146 | macro_rules! lt { ($a:expr_2021, $b:expr) => ( ($a.clamp(0.0, $b)/$b) ) } [INFO] [stdout] | ~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:146:40 [INFO] [stdout] | [INFO] [stdout] 146 | macro_rules! lt { ($a:expr, $b:expr) => ( ($a.clamp(0.0, $b)/$b) ) } [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see Migration Guide [INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier [INFO] [stdout] | [INFO] [stdout] 146 | macro_rules! lt { ($a:expr, $b:expr_2021) => ( ($a.clamp(0.0, $b)/$b) ) } [INFO] [stdout] | ~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `EnvTimeAmp` [INFO] [stdout] --> src/audio/waves.rs:170:31 [INFO] [stdout] | [INFO] [stdout] 170 | use crate::audio::waves::{EnvTimeAmp, Envelope, Oscillator, LinearTransform, ConstantWave, NullWave, SinWave, WaveGenerator}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:175:13 [INFO] [stdout] | [INFO] [stdout] 175 | ($a:expr, $b:expr) => {{ [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see Migration Guide [INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier [INFO] [stdout] | [INFO] [stdout] 175 | ($a:expr_2021, $b:expr) => {{ [INFO] [stdout] | ~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:175:22 [INFO] [stdout] | [INFO] [stdout] 175 | ($a:expr, $b:expr) => {{ [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see Migration Guide [INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier [INFO] [stdout] | [INFO] [stdout] 175 | ($a:expr, $b:expr_2021) => {{ [INFO] [stdout] | ~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `WaveGenerator` [INFO] [stdout] --> src/audio/instrument.rs:12:27 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::audio::waves::{WaveGenerator, Envelope}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Voicing` [INFO] [stdout] --> src/audio/instrument.rs:15:54 [INFO] [stdout] | [INFO] [stdout] 15 | use super::waves::{SinWave, IdentityWave, Randomize, Voicing, RepeatedVoicing, Test}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> src/audio/waves.rs:16:57 [INFO] [stdout] | [INFO] [stdout] 16 | impl WaveGenerator for IdentityWave { fn gen(&mut self, t: f32) -> f32 { 1.0 }} [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `timestamp` [INFO] [stdout] --> src/main.rs:31:71 [INFO] [stdout] | [INFO] [stdout] 31 | fn handle_key_event(&mut self, event: crossterm::event::KeyEvent, timestamp: f32) { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timestamp` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `gen` is never used [INFO] [stdout] --> src/audio/waves.rs:102:8 [INFO] [stdout] | [INFO] [stdout] 101 | impl Test { [INFO] [stdout] | --------- method in this implementation [INFO] [stdout] 102 | fn gen(&mut self, t: f32, freq: f32) -> f32 { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/main.rs:61:8 [INFO] [stdout] | [INFO] [stdout] 61 | if let Err(e) = std::thread::spawn(|| thread_input(event_handlers)).join() { [INFO] [stdout] | ^^^^^^^^^^^^^---------------------------------------------------------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/main.rs:63:5 [INFO] [stdout] | [INFO] [stdout] 63 | } [INFO] [stdout] | ^ [INFO] [stdout] = note: `--force-warn if-let-rescope` implied by `--force-warn rust-2024-compatibility` [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 61 ~ match std::thread::spawn(|| thread_input(event_handlers)).join() { Err(e) => { [INFO] [stdout] 62 | eprintln!("Failed to join thread: {:?}", e); [INFO] [stdout] 63 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 54 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] warning: failed to automatically apply fixes suggested by rustc to crate `rsynth` [INFO] [stderr] [INFO] [stderr] after fixes were automatically applied the compiler reported errors within these files: [INFO] [stderr] [INFO] [stderr] * src/audio/instrument.rs [INFO] [stderr] * src/audio/waves.rs [INFO] [stderr] * src/main.rs [INFO] [stderr] [INFO] [stderr] This likely indicates a bug in either rustc or cargo itself, [INFO] [stderr] and we would appreciate a bug report! You're likely to see [INFO] [stderr] a number of compiler warnings after this message which cargo [INFO] [stderr] attempted to fix but failed. If you could open an issue at [INFO] [stderr] https://github.com/rust-lang/rust/issues [INFO] [stderr] quoting the full output of this command we'd be very appreciative! [INFO] [stderr] Note that you may be able to make some more progress in the near-term [INFO] [stderr] fixing code with the `--broken-code` flag [INFO] [stderr] [INFO] [stderr] The following errors were reported: [INFO] [stderr] error[E0658]: fragment specifier `expr_2021` is unstable [INFO] [stderr] --> src/audio/waves.rs:145:30 [INFO] [stderr] | [INFO] [stderr] 145 | macro_rules! lerp { ($t:expr_2021, $a:expr_2021, $b:expr_2021) => ($a*(1.0-$t) + $b*$t) } [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: see issue #123742 for more information [INFO] [stderr] = help: add `#![feature(expr_fragment_specifier_2024)]` to the crate attributes to enable [INFO] [stderr] = note: this compiler was built on 2024-09-17; consider upgrading it if it is out of date [INFO] [stderr] [INFO] [stderr] error[E0658]: fragment specifier `expr_2021` is unstable [INFO] [stderr] --> src/audio/waves.rs:145:44 [INFO] [stderr] | [INFO] [stderr] 145 | macro_rules! lerp { ($t:expr_2021, $a:expr_2021, $b:expr_2021) => ($a*(1.0-$t) + $b*$t) } [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: see issue #123742 for more information [INFO] [stderr] = help: add `#![feature(expr_fragment_specifier_2024)]` to the crate attributes to enable [INFO] [stderr] = note: this compiler was built on 2024-09-17; consider upgrading it if it is out of date [INFO] [stderr] [INFO] [stderr] error[E0658]: fragment specifier `expr_2021` is unstable [INFO] [stderr] --> src/audio/waves.rs:145:58 [INFO] [stderr] | [INFO] [stderr] 145 | macro_rules! lerp { ($t:expr_2021, $a:expr_2021, $b:expr_2021) => ($a*(1.0-$t) + $b*$t) } [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: see issue #123742 for more information [INFO] [stderr] = help: add `#![feature(expr_fragment_specifier_2024)]` to the crate attributes to enable [INFO] [stderr] = note: this compiler was built on 2024-09-17; consider upgrading it if it is out of date [INFO] [stderr] [INFO] [stderr] error[E0658]: fragment specifier `expr_2021` is unstable [INFO] [stderr] --> src/audio/waves.rs:146:28 [INFO] [stderr] | [INFO] [stderr] 146 | macro_rules! lt { ($a:expr_2021, $b:expr_2021) => ( ($a.clamp(0.0, $b)/$b) ) } [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/instrument.rs:34:32 [INFO] [stdout] | [INFO] [stdout] 34 | *sample = instrmnt.gen(i as u128); [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] = note: `--force-warn keyword-idents-2024` implied by `--force-warn rust-2024-compatibility` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] | [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/instrument.rs:105:12 [INFO] [stdout] | [INFO] [stdout] 105 | pub fn gen(&mut self, i: u128) -> f32 { [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] = note: see issue #123742 for more information [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/instrument.rs:113:33 [INFO] [stdout] | [INFO] [stdout] 113 | self.oscillator.gen(t, *freq)*env [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] = help: add `#![feature(expr_fragment_specifier_2024)]` to the crate attributes to enable [INFO] [stderr] = note: this compiler was built on 2024-09-17; consider upgrading it if it is out of date [INFO] [stderr] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:3:30 [INFO] [stdout] | [INFO] [stdout] 3 | pub trait WaveGenerator { fn gen(&mut self, t: f32) -> f32; } [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] error[E0658]: fragment specifier `expr_2021` is unstable [INFO] [stderr] --> src/audio/waves.rs:146:42 [INFO] [stderr] | [INFO] [stderr] 146 | macro_rules! lt { ($a:expr_2021, $b:expr_2021) => ( ($a.clamp(0.0, $b)/$b) ) } [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: see issue #123742 for more information [INFO] [stderr] = help: add `#![feature(expr_fragment_specifier_2024)]` to the crate attributes to enable [INFO] [stderr] = note: this compiler was built on 2024-09-17; consider upgrading it if it is out of date [INFO] [stderr] [INFO] [stderr] error[E0658]: fragment specifier `expr_2021` is unstable [INFO] [stderr] --> src/audio/waves.rs:175:10 [INFO] [stderr] | [INFO] [stderr] 175 | ($a:expr_2021, $b:expr_2021) => {{ [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: see issue #123742 for more information [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:13:38 [INFO] [stdout] | [INFO] [stdout] 13 | impl WaveGenerator for NullWave { fn gen(&mut self, _: f32) -> f32 { 0.0 }} [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] = help: add `#![feature(expr_fragment_specifier_2024)]` to the crate attributes to enable [INFO] [stderr] = note: this compiler was built on 2024-09-17; consider upgrading it if it is out of date [INFO] [stderr] [INFO] [stderr] error[E0658]: fragment specifier `expr_2021` is unstable [INFO] [stderr] --> src/audio/waves.rs:175:24 [INFO] [stderr] | [INFO] [stderr] 175 | ($a:expr_2021, $b:expr_2021) => {{ [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:16:42 [INFO] [stdout] | [INFO] [stdout] 16 | impl WaveGenerator for IdentityWave { fn gen(&mut self, t: f32) -> f32 { 1.0 }} [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: see issue #123742 for more information [INFO] [stderr] = help: add `#![feature(expr_fragment_specifier_2024)]` to the crate attributes to enable [INFO] [stderr] = note: this compiler was built on 2024-09-17; consider upgrading it if it is out of date [INFO] [stderr] [INFO] [stderr] warning: unused macro definition: `assert_approx_eq` [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:19:42 [INFO] [stdout] | [INFO] [stdout] 19 | impl WaveGenerator for ConstantWave { fn gen(&mut self, t: f32) -> f32 { t }} [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] --> src/audio/waves.rs:174:18 [INFO] [stderr] | [INFO] [stderr] 174 | macro_rules! assert_approx_eq { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_macros)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `WaveGenerator` [INFO] [stderr] --> src/audio/instrument.rs:12:27 [INFO] [stderr] | [INFO] [stderr] 12 | use crate::audio::waves::{WaveGenerator, Envelope}; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:22:37 [INFO] [stdout] | [INFO] [stdout] 22 | impl WaveGenerator for SinWave { fn gen(&mut self, t: f32) -> f32 { (t*std::f32::consts::FRAC_PI_2).sin() }} [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `Voicing` [INFO] [stderr] --> src/audio/instrument.rs:15:54 [INFO] [stderr] | [INFO] [stderr] 15 | use super::waves::{SinWave, IdentityWave, Randomize, Voicing}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `t` [INFO] [stderr] --> src/audio/waves.rs:16:59 [INFO] [stderr] | [INFO] [stderr] 16 | impl WaveGenerator for IdentityWave { fn r#gen(&mut self, t: f32) -> f32 { 1.0 }} [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `timestamp` [INFO] [stderr] --> src/main.rs:31:71 [INFO] [stderr] | [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:25:40 [INFO] [stdout] | [INFO] [stdout] 25 | impl WaveGenerator for SquareWave { fn gen(&mut self, t: f32) -> f32 { if (t as i32) % 2 == 0 { 1.0 } else { -1.0 } }} [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] 31 | fn handle_key_event(&mut self, event: crossterm::event::KeyEvent, timestamp: f32) { [INFO] [stderr] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timestamp` [INFO] [stderr] [INFO] [stderr] error: aborting due to 7 previous errors; 5 warnings emitted [INFO] [stderr] [INFO] [stderr] For more information about this error, try `rustc --explain E0658`. [INFO] [stderr] Original diagnostics will follow. [INFO] [stderr] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:28:37 [INFO] [stdout] | [INFO] [stdout] 28 | impl WaveGenerator for TriWave { fn gen(&mut self, t: f32) -> f32 { (t % 2.0)-1.0 }} [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:56:41 [INFO] [stdout] | [INFO] [stdout] 56 | impl WaveGenerator for RandomWave { fn gen(&mut self, _: f32) -> f32 { self.rng.gen() } } [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:56:82 [INFO] [stdout] | [INFO] [stdout] 56 | impl WaveGenerator for RandomWave { fn gen(&mut self, _: f32) -> f32 { self.rng.gen() } } [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:60:45 [INFO] [stdout] | [INFO] [stdout] 60 | impl WaveGenerator for LinearTransform { fn gen(&mut self, t: f32) -> f32 { self.alpha.gen(t)*t + self.beta.gen(t) } } [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:60:88 [INFO] [stdout] | [INFO] [stdout] 60 | impl WaveGenerator for LinearTransform { fn gen(&mut self, t: f32) -> f32 { self.alpha.gen(t)*t + self.beta.gen(t) } } [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:60:109 [INFO] [stdout] | [INFO] [stdout] 60 | impl WaveGenerator for LinearTransform { fn gen(&mut self, t: f32) -> f32 { self.alpha.gen(t)*t + self.beta.gen(t) } } [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:69:24 [INFO] [stdout] | [INFO] [stdout] 69 | pub trait Voicing { fn gen(&self, osc: &mut Vec<&mut Oscillator>, t: f32, freq: f32) -> f32; } [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:72:35 [INFO] [stdout] | [INFO] [stdout] 72 | impl Voicing for MeanVoicing { fn gen(&self, oscs: &mut Vec<&mut Oscillator>, t: f32, freq: f32) -> f32 { [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:73:31 [INFO] [stdout] | [INFO] [stdout] 73 | oscs.iter_mut().map(|o| o.gen(t, freq)).sum::() / (oscs.len() as f32) [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:78:9 [INFO] [stdout] | [INFO] [stdout] 78 | fn gen(&self, oscs: &mut Vec<&mut Oscillator>, t: f32, freq: f32) -> f32 { [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:81:26 [INFO] [stdout] | [INFO] [stdout] 81 | total += osc.gen(t, freq); [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:84:30 [INFO] [stdout] | [INFO] [stdout] 84 | total += osc.gen(t-(self.0*i_f), freq*(self.1*i_f)); [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:85:30 [INFO] [stdout] | [INFO] [stdout] 85 | total += osc.gen(t+(self.0*i_f), freq*(1.0/(self.1*i_f))); [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:102:8 [INFO] [stdout] | [INFO] [stdout] 102 | fn gen(&mut self, t: f32, freq: f32) -> f32 { [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:103:22 [INFO] [stdout] | [INFO] [stdout] 103 | self.voicing.gen(&mut vec![&mut self.osc], t, freq) [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:117:12 [INFO] [stdout] | [INFO] [stdout] 117 | pub fn gen(&mut self, t: f32, freq: f32) -> f32 { [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:118:18 [INFO] [stdout] | [INFO] [stdout] 118 | self.otf.gen(self.ttf.gen(t)*self.wtf.gen(freq)) [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:118:31 [INFO] [stdout] | [INFO] [stdout] 118 | self.otf.gen(self.ttf.gen(t)*self.wtf.gen(freq)) [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:118:47 [INFO] [stdout] | [INFO] [stdout] 118 | self.otf.gen(self.ttf.gen(t)*self.wtf.gen(freq)) [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:159:22 [INFO] [stdout] | [INFO] [stdout] 159 | self.0 = rng.gen(); [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:160:22 [INFO] [stdout] | [INFO] [stdout] 160 | self.1 = rng.gen(); [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:161:22 [INFO] [stdout] | [INFO] [stdout] 161 | self.2 = rng.gen(); [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:162:22 [INFO] [stdout] | [INFO] [stdout] 162 | self.3 = rng.gen(); [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:200:25 [INFO] [stdout] | [INFO] [stdout] 200 | let y = rng.gen(); [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:201:33 [INFO] [stdout] | [INFO] [stdout] 201 | assert_approx_eq!(g.gen(y), y); [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:210:25 [INFO] [stdout] | [INFO] [stdout] 210 | let y = rng.gen(); [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:211:34 [INFO] [stdout] | [INFO] [stdout] 211 | assert_approx_eq!(lt.gen(y), y); [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:227:46 [INFO] [stdout] | [INFO] [stdout] 227 | assert_approx_eq!(test_generator.gen(f, 1.0), control_generator.gen(f)); [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `gen` is a keyword in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:227:77 [INFO] [stdout] | [INFO] [stdout] 227 | assert_approx_eq!(test_generator.gen(f, 1.0), control_generator.gen(f)); [INFO] [stdout] | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! [INFO] [stdout] = note: for more information, see issue #49716 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ConstantWave` [INFO] [stdout] --> src/audio/instrument.rs:13:66 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::audio::waves::{Oscillator, LinearTransform, NullWave, ConstantWave}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `RepeatedVoicing` and `Test` [INFO] [stdout] --> src/audio/instrument.rs:15:63 [INFO] [stdout] | [INFO] [stdout] 15 | use super::waves::{SinWave, IdentityWave, Randomize, Voicing, RepeatedVoicing, Test}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:145:33 [INFO] [stdout] | [INFO] [stdout] 145 | macro_rules! lerp { ($t:expr, $a:expr, $b:expr) => ($a*(1.0-$t) + $b*$t) } [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see Migration Guide [INFO] [stdout] = note: `--force-warn edition-2024-expr-fragment-specifier` implied by `--force-warn rust-2024-compatibility` [INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier [INFO] [stdout] | [INFO] [stdout] 145 | macro_rules! lerp { ($t:expr_2021, $a:expr, $b:expr) => ($a*(1.0-$t) + $b*$t) } [INFO] [stdout] | ~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:145:42 [INFO] [stdout] | [INFO] [stdout] 145 | macro_rules! lerp { ($t:expr, $a:expr, $b:expr) => ($a*(1.0-$t) + $b*$t) } [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see Migration Guide [INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier [INFO] [stdout] | [INFO] [stdout] 145 | macro_rules! lerp { ($t:expr, $a:expr_2021, $b:expr) => ($a*(1.0-$t) + $b*$t) } [INFO] [stdout] | ~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:145:51 [INFO] [stdout] | [INFO] [stdout] 145 | macro_rules! lerp { ($t:expr, $a:expr, $b:expr) => ($a*(1.0-$t) + $b*$t) } [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see Migration Guide [INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier [INFO] [stdout] | [INFO] [stdout] 145 | macro_rules! lerp { ($t:expr, $a:expr, $b:expr_2021) => ($a*(1.0-$t) + $b*$t) } [INFO] [stdout] | ~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:146:31 [INFO] [stdout] | [INFO] [stdout] 146 | macro_rules! lt { ($a:expr, $b:expr) => ( ($a.clamp(0.0, $b)/$b) ) } [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see Migration Guide [INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier [INFO] [stdout] | [INFO] [stdout] 146 | macro_rules! lt { ($a:expr_2021, $b:expr) => ( ($a.clamp(0.0, $b)/$b) ) } [INFO] [stdout] | ~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:146:40 [INFO] [stdout] | [INFO] [stdout] 146 | macro_rules! lt { ($a:expr, $b:expr) => ( ($a.clamp(0.0, $b)/$b) ) } [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see Migration Guide [INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier [INFO] [stdout] | [INFO] [stdout] 146 | macro_rules! lt { ($a:expr, $b:expr_2021) => ( ($a.clamp(0.0, $b)/$b) ) } [INFO] [stdout] | ~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rand::Rng` [INFO] [stdout] --> src/audio/waves.rs:168:9 [INFO] [stdout] | [INFO] [stdout] 168 | use rand::Rng; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module [INFO] [stdout] --> src/audio/waves.rs:167:1 [INFO] [stdout] | [INFO] [stdout] 167 | mod wave_tests { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ConstantWave`, `EnvTimeAmp`, `Envelope`, `LinearTransform`, `NullWave`, `Oscillator`, `SinWave`, and `WaveGenerator` [INFO] [stdout] --> src/audio/waves.rs:170:31 [INFO] [stdout] | [INFO] [stdout] 170 | use crate::audio::waves::{EnvTimeAmp, Envelope, Oscillator, LinearTransform, ConstantWave, NullWave, SinWave, WaveGenerator}; [INFO] [stdout] | ^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module [INFO] [stdout] --> src/audio/waves.rs:167:1 [INFO] [stdout] | [INFO] [stdout] 167 | mod wave_tests { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::IdentityWave` [INFO] [stdout] --> src/audio/waves.rs:172:9 [INFO] [stdout] | [INFO] [stdout] 172 | use super::IdentityWave; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module [INFO] [stdout] --> src/audio/waves.rs:167:1 [INFO] [stdout] | [INFO] [stdout] 167 | mod wave_tests { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused macro definition: `assert_approx_eq` [INFO] [stdout] --> src/audio/waves.rs:174:18 [INFO] [stdout] | [INFO] [stdout] 174 | macro_rules! assert_approx_eq { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_macros)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:175:13 [INFO] [stdout] | [INFO] [stdout] 175 | ($a:expr, $b:expr) => {{ [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see Migration Guide [INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier [INFO] [stdout] | [INFO] [stdout] 175 | ($a:expr_2021, $b:expr) => {{ [INFO] [stdout] | ~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the `expr` fragment specifier will accept more expressions in the 2024 edition [INFO] [stdout] --> src/audio/waves.rs:175:22 [INFO] [stdout] | [INFO] [stdout] 175 | ($a:expr, $b:expr) => {{ [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see Migration Guide [INFO] [stdout] help: to keep the existing behavior, use the `expr_2021` fragment specifier [INFO] [stdout] | [INFO] [stdout] 175 | ($a:expr, $b:expr_2021) => {{ [INFO] [stdout] | ~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `WaveGenerator` [INFO] [stdout] --> src/audio/instrument.rs:12:27 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::audio::waves::{WaveGenerator, Envelope}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Voicing` [INFO] [stdout] --> src/audio/instrument.rs:15:54 [INFO] [stdout] | [INFO] [stdout] 15 | use super::waves::{SinWave, IdentityWave, Randomize, Voicing, RepeatedVoicing, Test}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> src/audio/waves.rs:16:57 [INFO] [stdout] | [INFO] [stdout] 16 | impl WaveGenerator for IdentityWave { fn gen(&mut self, t: f32) -> f32 { 1.0 }} [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `timestamp` [INFO] [stdout] --> src/main.rs:31:71 [INFO] [stdout] | [INFO] [stdout] 31 | fn handle_key_event(&mut self, event: crossterm::event::KeyEvent, timestamp: f32) { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timestamp` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `gen` is never used [INFO] [stdout] --> src/audio/waves.rs:102:8 [INFO] [stdout] | [INFO] [stdout] 101 | impl Test { [INFO] [stdout] | --------- method in this implementation [INFO] [stdout] 102 | fn gen(&mut self, t: f32, freq: f32) -> f32 { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024 [INFO] [stdout] --> src/main.rs:61:8 [INFO] [stdout] | [INFO] [stdout] 61 | if let Err(e) = std::thread::spawn(|| thread_input(event_handlers)).join() { [INFO] [stdout] | ^^^^^^^^^^^^^---------------------------------------------------------- [INFO] [stdout] | | [INFO] [stdout] | this value has a significant drop implementation which may observe a major change in drop order and requires your discretion [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #124085 [INFO] [stdout] help: the value is now dropped here in Edition 2024 [INFO] [stdout] --> src/main.rs:63:5 [INFO] [stdout] | [INFO] [stdout] 63 | } [INFO] [stdout] | ^ [INFO] [stdout] = note: `--force-warn if-let-rescope` implied by `--force-warn rust-2024-compatibility` [INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021 [INFO] [stdout] | [INFO] [stdout] 61 ~ match std::thread::spawn(|| thread_input(event_handlers)).join() { Err(e) => { [INFO] [stdout] 62 | eprintln!("Failed to join thread: {:?}", e); [INFO] [stdout] 63 ~ } _ => {}} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 57 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.52s [INFO] [stderr] Running `cargo check` to verify 2024 [INFO] [stderr] Checking rsynth v0.1.0 (/tmp/fixit) [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/instrument.rs:34:32 [INFO] [stdout] | [INFO] [stdout] 34 | *sample = instrmnt.gen(i as u128); [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 34 | *sample = instrmnt.r#gen(i as u128); [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/instrument.rs:34:32 [INFO] [stdout] | [INFO] [stdout] 34 | *sample = instrmnt.gen(i as u128); [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 34 | *sample = instrmnt.r#gen(i as u128); [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/instrument.rs:105:12 [INFO] [stdout] | [INFO] [stdout] 105 | pub fn gen(&mut self, i: u128) -> f32 { [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 105 | pub fn r#gen(&mut self, i: u128) -> f32 { [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/instrument.rs:105:12 [INFO] [stdout] | [INFO] [stdout] 105 | pub fn gen(&mut self, i: u128) -> f32 { [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 105 | pub fn r#gen(&mut self, i: u128) -> f32 { [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/instrument.rs:113:33 [INFO] [stdout] | [INFO] [stdout] 113 | self.oscillator.gen(t, *freq)*env [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 113 | self.oscillator.r#gen(t, *freq)*env [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/instrument.rs:113:33 [INFO] [stdout] | [INFO] [stdout] 113 | self.oscillator.gen(t, *freq)*env [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 113 | self.oscillator.r#gen(t, *freq)*env [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:3:30 [INFO] [stdout] | [INFO] [stdout] 3 | pub trait WaveGenerator { fn gen(&mut self, t: f32) -> f32; } [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 3 | pub trait WaveGenerator { fn r#gen(&mut self, t: f32) -> f32; } [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:3:30 [INFO] [stdout] | [INFO] [stdout] 3 | pub trait WaveGenerator { fn gen(&mut self, t: f32) -> f32; } [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 3 | pub trait WaveGenerator { fn r#gen(&mut self, t: f32) -> f32; } [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:13:38 [INFO] [stdout] | [INFO] [stdout] 13 | impl WaveGenerator for NullWave { fn gen(&mut self, _: f32) -> f32 { 0.0 }} [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 13 | impl WaveGenerator for NullWave { fn r#gen(&mut self, _: f32) -> f32 { 0.0 }} [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:13:38 [INFO] [stdout] | [INFO] [stdout] 13 | impl WaveGenerator for NullWave { fn gen(&mut self, _: f32) -> f32 { 0.0 }} [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 13 | impl WaveGenerator for NullWave { fn r#gen(&mut self, _: f32) -> f32 { 0.0 }} [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:16:42 [INFO] [stdout] | [INFO] [stdout] 16 | impl WaveGenerator for IdentityWave { fn gen(&mut self, t: f32) -> f32 { 1.0 }} [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 16 | impl WaveGenerator for IdentityWave { fn r#gen(&mut self, t: f32) -> f32 { 1.0 }} [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:16:42 [INFO] [stdout] | [INFO] [stdout] 16 | impl WaveGenerator for IdentityWave { fn gen(&mut self, t: f32) -> f32 { 1.0 }} [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 16 | impl WaveGenerator for IdentityWave { fn r#gen(&mut self, t: f32) -> f32 { 1.0 }} [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:19:42 [INFO] [stdout] | [INFO] [stdout] 19 | impl WaveGenerator for ConstantWave { fn gen(&mut self, t: f32) -> f32 { t }} [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 19 | impl WaveGenerator for ConstantWave { fn r#gen(&mut self, t: f32) -> f32 { t }} [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:19:42 [INFO] [stdout] | [INFO] [stdout] 19 | impl WaveGenerator for ConstantWave { fn gen(&mut self, t: f32) -> f32 { t }} [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 19 | impl WaveGenerator for ConstantWave { fn r#gen(&mut self, t: f32) -> f32 { t }} [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:22:37 [INFO] [stdout] | [INFO] [stdout] 22 | impl WaveGenerator for SinWave { fn gen(&mut self, t: f32) -> f32 { (t*std::f32::consts::FRAC_PI_2).sin() }} [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 22 | impl WaveGenerator for SinWave { fn r#gen(&mut self, t: f32) -> f32 { (t*std::f32::consts::FRAC_PI_2).sin() }} [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:22:37 [INFO] [stdout] | [INFO] [stdout] 22 | impl WaveGenerator for SinWave { fn gen(&mut self, t: f32) -> f32 { (t*std::f32::consts::FRAC_PI_2).sin() }} [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 22 | impl WaveGenerator for SinWave { fn r#gen(&mut self, t: f32) -> f32 { (t*std::f32::consts::FRAC_PI_2).sin() }} [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:25:40 [INFO] [stdout] | [INFO] [stdout] 25 | impl WaveGenerator for SquareWave { fn gen(&mut self, t: f32) -> f32 { if (t as i32) % 2 == 0 { 1.0 } else { -1.0 } }} [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 25 | impl WaveGenerator for SquareWave { fn r#gen(&mut self, t: f32) -> f32 { if (t as i32) % 2 == 0 { 1.0 } else { -1.0 } }} [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:25:40 [INFO] [stdout] | [INFO] [stdout] 25 | impl WaveGenerator for SquareWave { fn gen(&mut self, t: f32) -> f32 { if (t as i32) % 2 == 0 { 1.0 } else { -1.0 } }} [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 25 | impl WaveGenerator for SquareWave { fn r#gen(&mut self, t: f32) -> f32 { if (t as i32) % 2 == 0 { 1.0 } else { -1.0 } }} [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:28:37 [INFO] [stdout] | [INFO] [stdout] 28 | impl WaveGenerator for TriWave { fn gen(&mut self, t: f32) -> f32 { (t % 2.0)-1.0 }} [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 28 | impl WaveGenerator for TriWave { fn r#gen(&mut self, t: f32) -> f32 { (t % 2.0)-1.0 }} [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:28:37 [INFO] [stdout] | [INFO] [stdout] 28 | impl WaveGenerator for TriWave { fn gen(&mut self, t: f32) -> f32 { (t % 2.0)-1.0 }} [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 28 | impl WaveGenerator for TriWave { fn r#gen(&mut self, t: f32) -> f32 { (t % 2.0)-1.0 }} [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:56:41 [INFO] [stdout] | [INFO] [stdout] 56 | impl WaveGenerator for RandomWave { fn gen(&mut self, _: f32) -> f32 { self.rng.gen() } } [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 56 | impl WaveGenerator for RandomWave { fn r#gen(&mut self, _: f32) -> f32 { self.rng.gen() } } [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:56:41 [INFO] [stdout] | [INFO] [stdout] 56 | impl WaveGenerator for RandomWave { fn gen(&mut self, _: f32) -> f32 { self.rng.gen() } } [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 56 | impl WaveGenerator for RandomWave { fn r#gen(&mut self, _: f32) -> f32 { self.rng.gen() } } [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:56:82 [INFO] [stdout] | [INFO] [stdout] 56 | impl WaveGenerator for RandomWave { fn gen(&mut self, _: f32) -> f32 { self.rng.gen() } } [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 56 | impl WaveGenerator for RandomWave { fn gen(&mut self, _: f32) -> f32 { self.rng.r#gen() } } [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:56:82 [INFO] [stdout] | [INFO] [stdout] 56 | impl WaveGenerator for RandomWave { fn gen(&mut self, _: f32) -> f32 { self.rng.gen() } } [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 56 | impl WaveGenerator for RandomWave { fn gen(&mut self, _: f32) -> f32 { self.rng.r#gen() } } [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:60:45 [INFO] [stdout] | [INFO] [stdout] 60 | impl WaveGenerator for LinearTransform { fn gen(&mut self, t: f32) -> f32 { self.alpha.gen(t)*t + self.beta.gen(t) } } [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 60 | impl WaveGenerator for LinearTransform { fn r#gen(&mut self, t: f32) -> f32 { self.alpha.gen(t)*t + self.beta.gen(t) } } [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:60:45 [INFO] [stdout] | [INFO] [stdout] 60 | impl WaveGenerator for LinearTransform { fn gen(&mut self, t: f32) -> f32 { self.alpha.gen(t)*t + self.beta.gen(t) } } [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 60 | impl WaveGenerator for LinearTransform { fn r#gen(&mut self, t: f32) -> f32 { self.alpha.gen(t)*t + self.beta.gen(t) } } [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:60:88 [INFO] [stdout] | [INFO] [stdout] 60 | impl WaveGenerator for LinearTransform { fn gen(&mut self, t: f32) -> f32 { self.alpha.gen(t)*t + self.beta.gen(t) } } [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 60 | impl WaveGenerator for LinearTransform { fn gen(&mut self, t: f32) -> f32 { self.alpha.r#gen(t)*t + self.beta.gen(t) } } [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:60:88 [INFO] [stdout] | [INFO] [stdout] 60 | impl WaveGenerator for LinearTransform { fn gen(&mut self, t: f32) -> f32 { self.alpha.gen(t)*t + self.beta.gen(t) } } [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 60 | impl WaveGenerator for LinearTransform { fn gen(&mut self, t: f32) -> f32 { self.alpha.r#gen(t)*t + self.beta.gen(t) } } [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:60:109 [INFO] [stdout] | [INFO] [stdout] 60 | impl WaveGenerator for LinearTransform { fn gen(&mut self, t: f32) -> f32 { self.alpha.gen(t)*t + self.beta.gen(t) } } [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 60 | impl WaveGenerator for LinearTransform { fn gen(&mut self, t: f32) -> f32 { self.alpha.gen(t)*t + self.beta.r#gen(t) } } [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:60:109 [INFO] [stdout] | [INFO] [stdout] 60 | impl WaveGenerator for LinearTransform { fn gen(&mut self, t: f32) -> f32 { self.alpha.gen(t)*t + self.beta.gen(t) } } [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 60 | impl WaveGenerator for LinearTransform { fn gen(&mut self, t: f32) -> f32 { self.alpha.gen(t)*t + self.beta.r#gen(t) } } [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:69:24 [INFO] [stdout] | [INFO] [stdout] 69 | pub trait Voicing { fn gen(&self, osc: &mut Vec<&mut Oscillator>, t: f32, freq: f32) -> f32; } [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 69 | pub trait Voicing { fn r#gen(&self, osc: &mut Vec<&mut Oscillator>, t: f32, freq: f32) -> f32; } [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:69:24 [INFO] [stdout] | [INFO] [stdout] 69 | pub trait Voicing { fn gen(&self, osc: &mut Vec<&mut Oscillator>, t: f32, freq: f32) -> f32; } [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 69 | pub trait Voicing { fn r#gen(&self, osc: &mut Vec<&mut Oscillator>, t: f32, freq: f32) -> f32; } [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:72:35 [INFO] [stdout] | [INFO] [stdout] 72 | impl Voicing for MeanVoicing { fn gen(&self, oscs: &mut Vec<&mut Oscillator>, t: f32, freq: f32) -> f32 { [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 72 | impl Voicing for MeanVoicing { fn r#gen(&self, oscs: &mut Vec<&mut Oscillator>, t: f32, freq: f32) -> f32 { [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:72:35 [INFO] [stdout] | [INFO] [stdout] 72 | impl Voicing for MeanVoicing { fn gen(&self, oscs: &mut Vec<&mut Oscillator>, t: f32, freq: f32) -> f32 { [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 72 | impl Voicing for MeanVoicing { fn r#gen(&self, oscs: &mut Vec<&mut Oscillator>, t: f32, freq: f32) -> f32 { [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:73:31 [INFO] [stdout] | [INFO] [stdout] 73 | oscs.iter_mut().map(|o| o.gen(t, freq)).sum::() / (oscs.len() as f32) [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 73 | oscs.iter_mut().map(|o| o.r#gen(t, freq)).sum::() / (oscs.len() as f32) [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:73:31 [INFO] [stdout] | [INFO] [stdout] 73 | oscs.iter_mut().map(|o| o.gen(t, freq)).sum::() / (oscs.len() as f32) [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 73 | oscs.iter_mut().map(|o| o.r#gen(t, freq)).sum::() / (oscs.len() as f32) [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:78:9 [INFO] [stdout] | [INFO] [stdout] 78 | fn gen(&self, oscs: &mut Vec<&mut Oscillator>, t: f32, freq: f32) -> f32 { [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 78 | fn r#gen(&self, oscs: &mut Vec<&mut Oscillator>, t: f32, freq: f32) -> f32 { [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:78:9 [INFO] [stdout] | [INFO] [stdout] 78 | fn gen(&self, oscs: &mut Vec<&mut Oscillator>, t: f32, freq: f32) -> f32 { [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 78 | fn r#gen(&self, oscs: &mut Vec<&mut Oscillator>, t: f32, freq: f32) -> f32 { [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:81:26 [INFO] [stdout] | [INFO] [stdout] 81 | total += osc.gen(t, freq); [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 81 | total += osc.r#gen(t, freq); [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:81:26 [INFO] [stdout] | [INFO] [stdout] 81 | total += osc.gen(t, freq); [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 81 | total += osc.r#gen(t, freq); [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:84:30 [INFO] [stdout] | [INFO] [stdout] 84 | total += osc.gen(t-(self.0*i_f), freq*(self.1*i_f)); [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 84 | total += osc.r#gen(t-(self.0*i_f), freq*(self.1*i_f)); [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:84:30 [INFO] [stdout] | [INFO] [stdout] 84 | total += osc.gen(t-(self.0*i_f), freq*(self.1*i_f)); [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 84 | total += osc.r#gen(t-(self.0*i_f), freq*(self.1*i_f)); [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:85:30 [INFO] [stdout] | [INFO] [stdout] 85 | total += osc.gen(t+(self.0*i_f), freq*(1.0/(self.1*i_f))); [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 85 | total += osc.r#gen(t+(self.0*i_f), freq*(1.0/(self.1*i_f))); [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:85:30 [INFO] [stdout] | [INFO] [stdout] 85 | total += osc.gen(t+(self.0*i_f), freq*(1.0/(self.1*i_f))); [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 85 | total += osc.r#gen(t+(self.0*i_f), freq*(1.0/(self.1*i_f))); [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:102:8 [INFO] [stdout] | [INFO] [stdout] 102 | fn gen(&mut self, t: f32, freq: f32) -> f32 { [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 102 | fn r#gen(&mut self, t: f32, freq: f32) -> f32 { [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:102:8 [INFO] [stdout] | [INFO] [stdout] 102 | fn gen(&mut self, t: f32, freq: f32) -> f32 { [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 102 | fn r#gen(&mut self, t: f32, freq: f32) -> f32 { [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:103:22 [INFO] [stdout] | [INFO] [stdout] 103 | self.voicing.gen(&mut vec![&mut self.osc], t, freq) [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 103 | self.voicing.r#gen(&mut vec![&mut self.osc], t, freq) [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:103:22 [INFO] [stdout] | [INFO] [stdout] 103 | self.voicing.gen(&mut vec![&mut self.osc], t, freq) [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 103 | self.voicing.r#gen(&mut vec![&mut self.osc], t, freq) [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:117:12 [INFO] [stdout] | [INFO] [stdout] 117 | pub fn gen(&mut self, t: f32, freq: f32) -> f32 { [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 117 | pub fn r#gen(&mut self, t: f32, freq: f32) -> f32 { [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:117:12 [INFO] [stdout] | [INFO] [stdout] 117 | pub fn gen(&mut self, t: f32, freq: f32) -> f32 { [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 117 | pub fn r#gen(&mut self, t: f32, freq: f32) -> f32 { [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:118:18 [INFO] [stdout] | [INFO] [stdout] 118 | self.otf.gen(self.ttf.gen(t)*self.wtf.gen(freq)) [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 118 | self.otf.r#gen(self.ttf.gen(t)*self.wtf.gen(freq)) [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:118:18 [INFO] [stdout] | [INFO] [stdout] 118 | self.otf.gen(self.ttf.gen(t)*self.wtf.gen(freq)) [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 118 | self.otf.r#gen(self.ttf.gen(t)*self.wtf.gen(freq)) [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:118:31 [INFO] [stdout] | [INFO] [stdout] 118 | self.otf.gen(self.ttf.gen(t)*self.wtf.gen(freq)) [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 118 | self.otf.gen(self.ttf.r#gen(t)*self.wtf.gen(freq)) [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:118:31 [INFO] [stdout] | [INFO] [stdout] 118 | self.otf.gen(self.ttf.gen(t)*self.wtf.gen(freq)) [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 118 | self.otf.gen(self.ttf.r#gen(t)*self.wtf.gen(freq)) [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:118:47 [INFO] [stdout] | [INFO] [stdout] 118 | self.otf.gen(self.ttf.gen(t)*self.wtf.gen(freq)) [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 118 | self.otf.gen(self.ttf.gen(t)*self.wtf.r#gen(freq)) [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:118:47 [INFO] [stdout] | [INFO] [stdout] 118 | self.otf.gen(self.ttf.gen(t)*self.wtf.gen(freq)) [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 118 | self.otf.gen(self.ttf.gen(t)*self.wtf.r#gen(freq)) [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:159:22 [INFO] [stdout] | [INFO] [stdout] 159 | self.0 = rng.gen(); [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 159 | self.0 = rng.r#gen(); [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:159:22 [INFO] [stdout] | [INFO] [stdout] 159 | self.0 = rng.gen(); [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 159 | self.0 = rng.r#gen(); [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:160:22 [INFO] [stdout] | [INFO] [stdout] 160 | self.1 = rng.gen(); [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 160 | self.1 = rng.r#gen(); [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:160:22 [INFO] [stdout] | [INFO] [stdout] 160 | self.1 = rng.gen(); [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 160 | self.1 = rng.r#gen(); [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:161:22 [INFO] [stdout] | [INFO] [stdout] 161 | self.2 = rng.gen(); [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 161 | self.2 = rng.r#gen(); [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:161:22 [INFO] [stdout] | [INFO] [stdout] 161 | self.2 = rng.gen(); [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 161 | self.2 = rng.r#gen(); [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:162:22 [INFO] [stdout] | [INFO] [stdout] 162 | self.3 = rng.gen(); [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 162 | self.3 = rng.r#gen(); [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:162:22 [INFO] [stdout] | [INFO] [stdout] 162 | self.3 = rng.gen(); [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 162 | self.3 = rng.r#gen(); [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:200:25 [INFO] [stdout] | [INFO] [stdout] 200 | let y = rng.gen(); [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 200 | let y = rng.r#gen(); [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:200:25 [INFO] [stdout] | [INFO] [stdout] 200 | let y = rng.gen(); [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 200 | let y = rng.r#gen(); [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:210:25 [INFO] [stdout] | [INFO] [stdout] 210 | let y = rng.gen(); [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 210 | let y = rng.r#gen(); [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:210:25 [INFO] [stdout] | [INFO] [stdout] 210 | let y = rng.gen(); [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 210 | let y = rng.r#gen(); [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:201:33 [INFO] [stdout] | [INFO] [stdout] 201 | assert_approx_eq!(g.gen(y), y); [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 201 | assert_approx_eq!(g.r#gen(y), y); [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:211:34 [INFO] [stdout] | [INFO] [stdout] 211 | assert_approx_eq!(lt.gen(y), y); [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 211 | assert_approx_eq!(lt.r#gen(y), y); [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:227:46 [INFO] [stdout] | [INFO] [stdout] 227 | assert_approx_eq!(test_generator.gen(f, 1.0), control_generator.gen(f)); [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 227 | assert_approx_eq!(test_generator.r#gen(f, 1.0), control_generator.gen(f)); [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected identifier, found reserved keyword `gen` [INFO] [stdout] --> src/audio/waves.rs:227:77 [INFO] [stdout] | [INFO] [stdout] 227 | assert_approx_eq!(test_generator.gen(f, 1.0), control_generator.gen(f)); [INFO] [stdout] | ^^^ expected identifier, found reserved keyword [INFO] [stdout] | [INFO] [stdout] help: escape `gen` to use it as an identifier [INFO] [stdout] | [INFO] [stdout] 227 | assert_approx_eq!(test_generator.gen(f, 1.0), control_generator.r#gen(f)); [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ConstantWave` [INFO] [stdout] --> src/audio/instrument.rs:13:66 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::audio::waves::{Oscillator, LinearTransform, NullWave, ConstantWave}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `RepeatedVoicing` and `Test` [INFO] [stdout] --> src/audio/instrument.rs:15:63 [INFO] [stdout] | [INFO] [stdout] 15 | use super::waves::{SinWave, IdentityWave, Randomize, Voicing, RepeatedVoicing, Test}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `EnvTimeAmp` [INFO] [stdout] --> src/audio/waves.rs:170:31 [INFO] [stdout] | [INFO] [stdout] 170 | use crate::audio::waves::{EnvTimeAmp, Envelope, Oscillator, LinearTransform, ConstantWave, NullWave, SinWave, WaveGenerator}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ConstantWave` [INFO] [stdout] --> src/audio/instrument.rs:13:66 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::audio::waves::{Oscillator, LinearTransform, NullWave, ConstantWave}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `RepeatedVoicing` and `Test` [INFO] [stdout] --> src/audio/instrument.rs:15:63 [INFO] [stdout] | [INFO] [stdout] 15 | use super::waves::{SinWave, IdentityWave, Randomize, Voicing, RepeatedVoicing, Test}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rand::Rng` [INFO] [stdout] --> src/audio/waves.rs:168:9 [INFO] [stdout] | [INFO] [stdout] 168 | use rand::Rng; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module [INFO] [stdout] --> src/audio/waves.rs:167:1 [INFO] [stdout] | [INFO] [stdout] 167 | mod wave_tests { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ConstantWave`, `EnvTimeAmp`, `Envelope`, `LinearTransform`, `NullWave`, `Oscillator`, `SinWave`, and `WaveGenerator` [INFO] [stdout] --> src/audio/waves.rs:170:31 [INFO] [stdout] | [INFO] [stdout] 170 | use crate::audio::waves::{EnvTimeAmp, Envelope, Oscillator, LinearTransform, ConstantWave, NullWave, SinWave, WaveGenerator}; [INFO] [stdout] | ^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module [INFO] [stdout] --> src/audio/waves.rs:167:1 [INFO] [stdout] | [INFO] [stdout] 167 | mod wave_tests { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::IdentityWave` [INFO] [stdout] --> src/audio/waves.rs:172:9 [INFO] [stdout] | [INFO] [stdout] 172 | use super::IdentityWave; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module [INFO] [stdout] --> src/audio/waves.rs:167:1 [INFO] [stdout] | [INFO] [stdout] 167 | mod wave_tests { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused macro definition: `assert_approx_eq` [INFO] [stdout] --> src/audio/waves.rs:174:18 [INFO] [stdout] | [INFO] [stdout] 174 | macro_rules! assert_approx_eq { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_macros)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `WaveGenerator` [INFO] [stdout] --> src/audio/instrument.rs:12:27 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::audio::waves::{WaveGenerator, Envelope}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Voicing` [INFO] [stdout] --> src/audio/instrument.rs:15:54 [INFO] [stdout] | [INFO] [stdout] 15 | use super::waves::{SinWave, IdentityWave, Randomize, Voicing, RepeatedVoicing, Test}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `WaveGenerator` [INFO] [stdout] --> src/audio/instrument.rs:12:27 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::audio::waves::{WaveGenerator, Envelope}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Voicing` [INFO] [stdout] --> src/audio/instrument.rs:15:54 [INFO] [stdout] | [INFO] [stdout] 15 | use super::waves::{SinWave, IdentityWave, Randomize, Voicing, RepeatedVoicing, Test}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> src/audio/waves.rs:16:57 [INFO] [stdout] | [INFO] [stdout] 16 | impl WaveGenerator for IdentityWave { fn gen(&mut self, t: f32) -> f32 { 1.0 }} [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t` [INFO] [stdout] --> src/audio/waves.rs:16:57 [INFO] [stdout] | [INFO] [stdout] 16 | impl WaveGenerator for IdentityWave { fn gen(&mut self, t: f32) -> f32 { 1.0 }} [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_t` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `timestamp` [INFO] [stdout] --> src/main.rs:31:71 [INFO] [stdout] | [INFO] [stdout] 31 | fn handle_key_event(&mut self, event: crossterm::event::KeyEvent, timestamp: f32) { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timestamp` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 34 previous errors; 10 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `timestamp` [INFO] [stdout] --> src/main.rs:31:71 [INFO] [stdout] | [INFO] [stdout] 31 | fn handle_key_event(&mut self, event: crossterm::event::KeyEvent, timestamp: f32) { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timestamp` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] error: could not compile `rsynth` (bin "rsynth") due to 35 previous errors; 10 warnings emitted [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stdout] error: aborting due to 38 previous errors; 7 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] error: could not compile `rsynth` (bin "rsynth" test) due to 39 previous errors; 7 warnings emitted [INFO] [stderr] error: failed to check after updating to 2024 [INFO] [stderr] [INFO] [stderr] Caused by: [INFO] [stderr] process didn't exit successfully: `cargo check --frozen --all --all-targets --message-format=json` (exit status: 101) [INFO] running `Command { std: "docker" "inspect" "d87177be980d61930ec4e455b829e91c4f66b2e69cc418c57815720022259455", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "d87177be980d61930ec4e455b829e91c4f66b2e69cc418c57815720022259455", kill_on_drop: false }` [INFO] [stdout] d87177be980d61930ec4e455b829e91c4f66b2e69cc418c57815720022259455