[INFO] cloning repository https://github.com/segaTk/Sound-Bar [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/segaTk/Sound-Bar" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FsegaTk%2FSound-Bar", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FsegaTk%2FSound-Bar'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 167c4bd94b4934894255ce0429c3e0bf84ed8947 [INFO] checking segaTk/Sound-Bar against 615014f15745532730b9ce7a1d9309f8b4756f93 for pr-160491 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FsegaTk%2FSound-Bar" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/segaTk/Sound-Bar [INFO] finished tweaking git repo https://github.com/segaTk/Sound-Bar [INFO] tweaked toml for git repo https://github.com/segaTk/Sound-Bar written to /workspace/builds/worker-3-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/segaTk/Sound-Bar on toolchain 615014f15745532730b9ce7a1d9309f8b4756f93 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+615014f15745532730b9ce7a1d9309f8b4756f93" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/segaTk/Sound-Bar 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" "+615014f15745532730b9ce7a1d9309f8b4756f93" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:00c5645b54fe3ce5dae1417175e3c7fb6a6646c021d554ecd63a097b8b9f3602" "sleep" "infinity", kill_on_drop: false }` [INFO] [stdout] 1e88f4aaaa625942734b4b9a34ccbecf52cd5ee96f84cd3bf3b9b24d617d9355 [INFO] running `Command { std: "docker" "start" "1e88f4aaaa625942734b4b9a34ccbecf52cd5ee96f84cd3bf3b9b24d617d9355", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "1e88f4aaaa625942734b4b9a34ccbecf52cd5ee96f84cd3bf3b9b24d617d9355", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "1e88f4aaaa625942734b4b9a34ccbecf52cd5ee96f84cd3bf3b9b24d617d9355" "/opt/rustwide/cargo-home/bin/cargo" "+615014f15745532730b9ce7a1d9309f8b4756f93" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "1e88f4aaaa625942734b4b9a34ccbecf52cd5ee96f84cd3bf3b9b24d617d9355", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "1e88f4aaaa625942734b4b9a34ccbecf52cd5ee96f84cd3bf3b9b24d617d9355" "/opt/rustwide/cargo-home/bin/cargo" "+615014f15745532730b9ce7a1d9309f8b4756f93" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stderr] Compiling quote v1.0.46 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling winnow v1.0.3 [INFO] [stderr] Checking linux-raw-sys v0.12.1 [INFO] [stderr] Compiling libc v0.2.186 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Checking futures-lite v2.6.1 [INFO] [stderr] Compiling zerocopy v0.8.52 [INFO] [stderr] Checking simd-adler32 v0.3.9 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Checking piper v0.2.5 [INFO] [stderr] Checking memchr v2.8.2 [INFO] [stderr] Checking wayland-sys v0.31.11 [INFO] [stderr] Compiling alsa-sys v0.3.1 [INFO] [stderr] Checking syn v2.0.118 [INFO] [stderr] Checking miniz_oxide v0.8.9 [INFO] [stderr] Checking arrayvec v0.7.7 [INFO] [stderr] Checking digest v0.10.7 [INFO] [stderr] Checking fdeflate v0.3.7 [INFO] [stderr] Checking symphonia-core v0.5.5 [INFO] [stderr] Checking num-integer v0.1.46 [INFO] [stderr] Checking rand_core v0.9.5 [INFO] [stderr] Compiling quick-xml v0.39.4 [INFO] [stderr] Checking inout v0.1.4 [INFO] [stderr] Checking uuid v1.23.4 [INFO] [stderr] Checking crc-catalog v2.5.0 [INFO] [stderr] Checking flate2 v1.1.9 [INFO] [stderr] Compiling miniquad v0.4.10 [INFO] [stderr] Checking alsa v0.9.1 [INFO] [stderr] Checking crc v3.4.0 [INFO] [stderr] Checking png v0.17.16 [INFO] [stderr] Checking cipher v0.4.4 [INFO] [stderr] Checking blocking v1.6.2 [INFO] [stderr] Checking async-executor v1.14.0 [INFO] [stderr] Checking hmac v0.12.1 [INFO] [stderr] Checking strength_reduce v0.2.4 [INFO] [stderr] Compiling toml_parser v1.1.2+spec-1.1.0 [INFO] [stderr] Checking raw-window-handle v0.6.2 [INFO] [stderr] Compiling zip v2.4.2 [INFO] [stderr] Compiling rfd v0.15.4 [INFO] [stderr] Checking async-fs v2.2.0 [INFO] [stderr] Checking time v0.3.53 [INFO] [stderr] Checking rayon v1.12.0 [INFO] [stderr] Checking zopfli v0.8.3 [INFO] [stderr] Compiling jobserver v0.1.34 [INFO] [stderr] Checking transpose v0.2.3 [INFO] [stderr] Checking pbkdf2 v0.12.2 [INFO] [stderr] Compiling toml_edit v0.25.12+spec-1.1.0 [INFO] [stderr] Checking lzma-rs v0.3.0 [INFO] [stderr] Compiling cc v1.2.65 [INFO] [stderr] Checking image v0.24.9 [INFO] [stderr] Checking aes v0.8.4 [INFO] [stderr] Checking cpal v0.15.3 [INFO] [stderr] Compiling wayland-scanner v0.31.10 [INFO] [stderr] Checking symphonia-metadata v0.5.5 [INFO] [stderr] Checking primal-check v0.3.4 [INFO] [stderr] Checking sha1 v0.10.6 [INFO] [stderr] Checking num-complex v0.4.6 [INFO] [stderr] Checking symphonia-bundle-mp3 v0.5.5 [INFO] [stderr] Checking pollster v0.4.0 [INFO] [stderr] Checking deflate64 v0.1.12 [INFO] [stderr] Checking serde_json v1.0.150 [INFO] [stderr] Checking chrono v0.4.45 [INFO] [stderr] Checking rustfft v6.4.1 [INFO] [stderr] Compiling proc-macro-crate v3.5.0 [INFO] [stderr] Checking quick-xml v0.36.2 [INFO] [stderr] Checking symphonia v0.5.5 [INFO] [stderr] Checking rodio v0.17.3 [INFO] [stderr] Checking macroquad v0.4.15 [INFO] [stderr] Compiling zstd-sys v2.0.16+zstd.1.5.7 [INFO] [stderr] Compiling wayland-backend v0.3.15 [INFO] [stderr] Compiling bzip2-sys v0.1.13+1.0.8 [INFO] [stderr] Compiling lzma-sys v0.1.20 [INFO] [stderr] Checking midly v0.5.3 [INFO] [stderr] Checking bzip2 v0.5.2 [INFO] [stderr] Checking xz2 v0.1.7 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Checking ppv-lite86 v0.2.21 [INFO] [stderr] Checking polling v3.11.0 [INFO] [stderr] Checking rand_chacha v0.9.0 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking async-io v2.6.0 [INFO] [stderr] Checking rand v0.8.6 [INFO] [stderr] Checking rand v0.9.4 [INFO] [stderr] Checking async-signal v0.2.14 [INFO] [stderr] Checking async-net v2.0.0 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling zerofrom-derive v0.1.7 [INFO] [stderr] Compiling yoke-derive v0.8.2 [INFO] [stderr] Compiling zerovec-derive v0.11.3 [INFO] [stderr] Compiling displaydoc v0.2.6 [INFO] [stderr] Compiling enumflags2_derive v0.7.12 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling futures-macro v0.3.32 [INFO] [stderr] Checking async-process v2.5.0 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Compiling serde_repr v0.1.20 [INFO] [stderr] Compiling async-recursion v1.1.1 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling zeroize_derive v1.5.0 [INFO] [stderr] Checking wayland-client v0.31.14 [INFO] [stderr] Checking futures-util v0.3.32 [INFO] [stderr] Checking zerofrom v0.1.8 [INFO] [stderr] Checking tracing v0.1.44 [INFO] [stderr] Checking yoke v0.8.3 [INFO] [stderr] Checking zeroize v1.9.0 [INFO] [stderr] Checking zerovec v0.11.6 [INFO] [stderr] Checking zerotrie v0.2.4 [INFO] [stderr] Checking thiserror v2.0.18 [INFO] [stderr] Compiling zstd-safe v7.2.4 [INFO] [stderr] Checking zstd v0.13.3 [INFO] [stderr] Checking tinystr v0.8.3 [INFO] [stderr] Checking potential_utf v0.1.5 [INFO] [stderr] Checking wayland-protocols v0.32.13 [INFO] [stderr] Checking icu_collections v2.2.0 [INFO] [stderr] Checking icu_locale_core v2.2.0 [INFO] [stderr] Checking serde v1.0.228 [INFO] [stderr] Checking icu_provider v2.2.0 [INFO] [stderr] Checking icu_properties v2.2.0 [INFO] [stderr] Checking icu_normalizer v2.2.0 [INFO] [stderr] Checking enumflags2 v0.7.12 [INFO] [stderr] Checking zvariant_utils v3.4.0 [INFO] [stderr] Checking toml_datetime v0.6.11 [INFO] [stderr] Checking serde_spanned v0.6.9 [INFO] [stderr] Checking toml_edit v0.22.27 [INFO] [stderr] Checking idna_adapter v1.2.2 [INFO] [stderr] Checking idna v1.1.0 [INFO] [stderr] Checking url v2.5.8 [INFO] [stderr] Compiling zvariant_derive v5.12.0 [INFO] [stderr] Compiling zvariant v5.12.0 [INFO] [stderr] Checking toml v0.8.23 [INFO] [stderr] Checking zbus_names v4.3.2 [INFO] [stderr] Compiling zbus_macros v5.16.0 [INFO] [stderr] Checking zbus v5.16.0 [INFO] [stderr] Checking ashpd v0.11.1 [INFO] [stderr] Checking sound_notes v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `all_tunings` [INFO] [stdout] --> src/graphics.rs:11:41 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::tuner_presets::{get_tunings, all_tunings, GuitarTuning}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `GameEventNote` and `PLAYHEAD_X` [INFO] [stdout] --> src/graphics.rs:23:29 [INFO] [stdout] | [INFO] [stdout] 23 | game_types::{GameEvent, GameEventNote}, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 24 | lesson_game::{LessonState, HintData}, [INFO] [stdout] 25 | PLAYHEAD_X, HIT_ZONE_Y, HIT_TOLERANCE, HIGHWAY_H, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/lessons.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `MouseButton` and `is_mouse_button_pressed` [INFO] [stdout] --> src/lessons.rs:9:18 [INFO] [stdout] | [INFO] [stdout] 9 | Color, Font, MouseButton, TextParams, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 10 | draw_line, draw_rectangle, draw_rectangle_lines, draw_text_ex, [INFO] [stdout] 11 | is_mouse_button_pressed, measure_text, mouse_wheel, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `DrawTextureParams`, `Texture2D`, and `draw_texture_ex` [INFO] [stdout] --> src/lessons.rs:13:26 [INFO] [stdout] | [INFO] [stdout] 13 | use macroquad::texture::{Texture2D, draw_texture_ex, DrawTextureParams}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `macroquad::math::Vec2` [INFO] [stdout] --> src/lessons.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | use macroquad::math::Vec2; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::localization::Localization` [INFO] [stdout] --> src/lessons.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | use crate::localization::Localization; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `PLAYHEAD_X` [INFO] [stdout] --> src/game_types.rs:12:36 [INFO] [stdout] | [INFO] [stdout] 12 | SPEED_MULTIPLIERS, HIT_ZONE_Y, PLAYHEAD_X, NUM_STRINGS, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `HIT_TOLERANCE`, `HIT_ZONE_Y`, `get_frequency`, and `parser::NoteTechnique` [INFO] [stdout] --> src/lesson_game.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | parser::NoteTechnique, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 18 | get_frequency, correct_octave_error, get_freq_tolerance, is_valid_guitar_freq, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 19 | NUM_STRINGS, HIT_ZONE_Y, HIT_TOLERANCE, [INFO] [stdout] | ^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Format` [INFO] [stdout] --> src/midi_parser.rs:7:47 [INFO] [stdout] | [INFO] [stdout] 7 | use midly::{Smf, TrackEventKind, MetaMessage, Format, Timing}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::Path` [INFO] [stdout] --> src/midi_parser.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use std::path::Path; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Section` [INFO] [stdout] --> src/midi_parser.rs:11:96 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::parser::{SongEvent, ChordNote, NoteTechnique, SongNote, ParsedSongData, TempoEvent, Section}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `GameEventNote` [INFO] [stdout] --> src/main.rs:43:29 [INFO] [stdout] | [INFO] [stdout] 43 | use game_types::{GameEvent, GameEventNote, GameNote}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `GuitarTuning`, `all_tunings`, and `get_tunings` [INFO] [stdout] --> src/main.rs:46:21 [INFO] [stdout] | [INFO] [stdout] 46 | use tuner_presets::{get_tunings, all_tunings, GuitarTuning}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `all_tunings` [INFO] [stdout] --> src/graphics.rs:11:41 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::tuner_presets::{get_tunings, all_tunings, GuitarTuning}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `GameEventNote` and `PLAYHEAD_X` [INFO] [stdout] --> src/graphics.rs:23:29 [INFO] [stdout] | [INFO] [stdout] 23 | game_types::{GameEvent, GameEventNote}, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 24 | lesson_game::{LessonState, HintData}, [INFO] [stdout] 25 | PLAYHEAD_X, HIT_ZONE_Y, HIT_TOLERANCE, HIGHWAY_H, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/lessons.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `MouseButton` and `is_mouse_button_pressed` [INFO] [stdout] --> src/lessons.rs:9:18 [INFO] [stdout] | [INFO] [stdout] 9 | Color, Font, MouseButton, TextParams, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 10 | draw_line, draw_rectangle, draw_rectangle_lines, draw_text_ex, [INFO] [stdout] 11 | is_mouse_button_pressed, measure_text, mouse_wheel, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `DrawTextureParams`, `Texture2D`, and `draw_texture_ex` [INFO] [stdout] --> src/lessons.rs:13:26 [INFO] [stdout] | [INFO] [stdout] 13 | use macroquad::texture::{Texture2D, draw_texture_ex, DrawTextureParams}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `macroquad::math::Vec2` [INFO] [stdout] --> src/lessons.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | use macroquad::math::Vec2; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::localization::Localization` [INFO] [stdout] --> src/lessons.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | use crate::localization::Localization; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `PLAYHEAD_X` [INFO] [stdout] --> src/game_types.rs:12:36 [INFO] [stdout] | [INFO] [stdout] 12 | SPEED_MULTIPLIERS, HIT_ZONE_Y, PLAYHEAD_X, NUM_STRINGS, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `HIT_TOLERANCE`, `HIT_ZONE_Y`, `get_frequency`, and `parser::NoteTechnique` [INFO] [stdout] --> src/lesson_game.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | parser::NoteTechnique, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 18 | get_frequency, correct_octave_error, get_freq_tolerance, is_valid_guitar_freq, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 19 | NUM_STRINGS, HIT_ZONE_Y, HIT_TOLERANCE, [INFO] [stdout] | ^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Format` [INFO] [stdout] --> src/midi_parser.rs:7:47 [INFO] [stdout] | [INFO] [stdout] 7 | use midly::{Smf, TrackEventKind, MetaMessage, Format, Timing}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::Path` [INFO] [stdout] --> src/midi_parser.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use std::path::Path; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Section` [INFO] [stdout] --> src/midi_parser.rs:11:96 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::parser::{SongEvent, ChordNote, NoteTechnique, SongNote, ParsedSongData, TempoEvent, Section}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `GameEventNote` [INFO] [stdout] --> src/main.rs:43:29 [INFO] [stdout] | [INFO] [stdout] 43 | use game_types::{GameEvent, GameEventNote, GameNote}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `GuitarTuning`, `all_tunings`, and `get_tunings` [INFO] [stdout] --> src/main.rs:46:21 [INFO] [stdout] | [INFO] [stdout] 46 | use tuner_presets::{get_tunings, all_tunings, GuitarTuning}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:1484:9 [INFO] [stdout] | [INFO] [stdout] 1484 | let mut studio_playing = false; [INFO] [stdout] | ----^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:1487:9 [INFO] [stdout] | [INFO] [stdout] 1487 | let mut studio_is_playing = false; [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:1492:9 [INFO] [stdout] | [INFO] [stdout] 1492 | let mut studio_generate_clicked = false; [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:1493:9 [INFO] [stdout] | [INFO] [stdout] 1493 | let mut studio_generation_message: Option<(String, f64)> = None; [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:1689:35 [INFO] [stdout] | [INFO] [stdout] 1689 | if let Ok(mut o) = output_arc.lock() { o.stop_playback(); } [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:1697:35 [INFO] [stdout] | [INFO] [stdout] 1697 | if let Ok(mut o) = output_arc.lock() { o.stop_playback(); } [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:1707:35 [INFO] [stdout] | [INFO] [stdout] 1707 | if let Ok(mut o) = output_arc.lock() { o.stop_playback(); } [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:1714:43 [INFO] [stdout] | [INFO] [stdout] 1714 | ... if let Ok(mut o) = output_arc.lock() { [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:1745:35 [INFO] [stdout] | [INFO] [stdout] 1745 | if let Ok(mut o) = output_arc.lock() { o.stop_playback(); } [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:1815:39 [INFO] [stdout] | [INFO] [stdout] 1815 | ... if let Ok(mut o) = output_arc.lock() { [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:1891:35 [INFO] [stdout] | [INFO] [stdout] 1891 | if let Ok(mut o) = output_arc.lock() { o.stop_playback(); } [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:1901:35 [INFO] [stdout] | [INFO] [stdout] 1901 | if let Ok(mut o) = output_arc.lock() { o.stop_playback(); } [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:1484:9 [INFO] [stdout] | [INFO] [stdout] 1484 | let mut studio_playing = false; [INFO] [stdout] | ----^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:1487:9 [INFO] [stdout] | [INFO] [stdout] 1487 | let mut studio_is_playing = false; [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:1492:9 [INFO] [stdout] | [INFO] [stdout] 1492 | let mut studio_generate_clicked = false; [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:1493:9 [INFO] [stdout] | [INFO] [stdout] 1493 | let mut studio_generation_message: Option<(String, f64)> = None; [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:1689:35 [INFO] [stdout] | [INFO] [stdout] 1689 | if let Ok(mut o) = output_arc.lock() { o.stop_playback(); } [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:1697:35 [INFO] [stdout] | [INFO] [stdout] 1697 | if let Ok(mut o) = output_arc.lock() { o.stop_playback(); } [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:1707:35 [INFO] [stdout] | [INFO] [stdout] 1707 | if let Ok(mut o) = output_arc.lock() { o.stop_playback(); } [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:1714:43 [INFO] [stdout] | [INFO] [stdout] 1714 | ... if let Ok(mut o) = output_arc.lock() { [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:1745:35 [INFO] [stdout] | [INFO] [stdout] 1745 | if let Ok(mut o) = output_arc.lock() { o.stop_playback(); } [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:1815:39 [INFO] [stdout] | [INFO] [stdout] 1815 | ... if let Ok(mut o) = output_arc.lock() { [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:1891:35 [INFO] [stdout] | [INFO] [stdout] 1891 | if let Ok(mut o) = output_arc.lock() { o.stop_playback(); } [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:1901:35 [INFO] [stdout] | [INFO] [stdout] 1901 | if let Ok(mut o) = output_arc.lock() { o.stop_playback(); } [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `best_string` is assigned to, but never used [INFO] [stdout] --> src/audio_engine.rs:783:13 [INFO] [stdout] | [INFO] [stdout] 783 | let mut best_string = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_best_string` instead [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `best_fret` is assigned to, but never used [INFO] [stdout] --> src/audio_engine.rs:784:13 [INFO] [stdout] | [INFO] [stdout] 784 | let mut best_fret = 0; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_best_fret` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `best_string` is never read [INFO] [stdout] --> src/audio_engine.rs:798:21 [INFO] [stdout] | [INFO] [stdout] 798 | best_string = string_idx; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `best_fret` is never read [INFO] [stdout] --> src/audio_engine.rs:799:21 [INFO] [stdout] | [INFO] [stdout] 799 | best_fret = fret as usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/audio_engine.rs:947:9 [INFO] [stdout] | [INFO] [stdout] 947 | let mut file = File::create(output_path) [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `data_len` [INFO] [stdout] --> src/audio_engine.rs:926:13 [INFO] [stdout] | [INFO] [stdout] 926 | let data_len = buffer.len() - data_start; [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_data_len` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `lmb` [INFO] [stdout] --> src/graphics.rs:2724:13 [INFO] [stdout] | [INFO] [stdout] 2724 | let lmb = is_mouse_button_pressed(MouseButton::Left); [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_lmb` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `best_string` is assigned to, but never used [INFO] [stdout] --> src/audio_engine.rs:783:13 [INFO] [stdout] | [INFO] [stdout] 783 | let mut best_string = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_best_string` instead [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `best_fret` is assigned to, but never used [INFO] [stdout] --> src/audio_engine.rs:784:13 [INFO] [stdout] | [INFO] [stdout] 784 | let mut best_fret = 0; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_best_fret` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `best_string` is never read [INFO] [stdout] --> src/audio_engine.rs:798:21 [INFO] [stdout] | [INFO] [stdout] 798 | best_string = string_idx; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `best_fret` is never read [INFO] [stdout] --> src/audio_engine.rs:799:21 [INFO] [stdout] | [INFO] [stdout] 799 | best_fret = fret as usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/audio_engine.rs:947:9 [INFO] [stdout] | [INFO] [stdout] 947 | let mut file = File::create(output_path) [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `data_len` [INFO] [stdout] --> src/audio_engine.rs:926:13 [INFO] [stdout] | [INFO] [stdout] 926 | let data_len = buffer.len() - data_start; [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_data_len` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/graphics.rs:5026:9 [INFO] [stdout] | [INFO] [stdout] 5026 | let mut new_cursor = rename_cursor; [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/graphics.rs:5040:9 [INFO] [stdout] | [INFO] [stdout] 5040 | let mut rename_cancel = false; [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `nw` [INFO] [stdout] --> src/graphics.rs:5307:13 [INFO] [stdout] | [INFO] [stdout] 5307 | let nw = measure_text(&num_str, Some(f), nfs, 1.0).width / gc.scale_x; [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_nw` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `nw` [INFO] [stdout] --> src/graphics.rs:5409:9 [INFO] [stdout] | [INFO] [stdout] 5409 | let nw = measure_text(&display_name, Some(f), ntf, 1.0).width / gc.scale_x; [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_nw` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `dfs` [INFO] [stdout] --> src/graphics.rs:5565:13 [INFO] [stdout] | [INFO] [stdout] 5565 | let dfs = gc.s(32.0).round() as f32; [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_dfs` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `lmb` [INFO] [stdout] --> src/graphics.rs:2724:13 [INFO] [stdout] | [INFO] [stdout] 2724 | let lmb = is_mouse_button_pressed(MouseButton::Left); [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_lmb` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/graphics.rs:5026:9 [INFO] [stdout] | [INFO] [stdout] 5026 | let mut new_cursor = rename_cursor; [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/graphics.rs:5040:9 [INFO] [stdout] | [INFO] [stdout] 5040 | let mut rename_cancel = false; [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `nw` [INFO] [stdout] --> src/graphics.rs:5307:13 [INFO] [stdout] | [INFO] [stdout] 5307 | let nw = measure_text(&num_str, Some(f), nfs, 1.0).width / gc.scale_x; [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_nw` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `nw` [INFO] [stdout] --> src/graphics.rs:5409:9 [INFO] [stdout] | [INFO] [stdout] 5409 | let nw = measure_text(&display_name, Some(f), ntf, 1.0).width / gc.scale_x; [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_nw` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `dfs` [INFO] [stdout] --> src/graphics.rs:5565:13 [INFO] [stdout] | [INFO] [stdout] 5565 | let dfs = gc.s(32.0).round() as f32; [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_dfs` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tf` [INFO] [stdout] --> src/theme.rs:590:39 [INFO] [stdout] | [INFO] [stdout] 590 | sx: f32, sy: f32, def: &CloudDef, tf: f32, light: &SunLight [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_tf` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tuning` [INFO] [stdout] --> src/lesson_game.rs:148:5 [INFO] [stdout] | [INFO] [stdout] 148 | tuning: &[f32; NUM_STRINGS], [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_tuning` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tuning` [INFO] [stdout] --> src/midi_parser.rs:32:35 [INFO] [stdout] | [INFO] [stdout] 32 | pub fn pitch_to_guitar(pitch: u8, tuning: &[f32; 6]) -> Option<(usize, usize)> { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_tuning` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `studio_playing` [INFO] [stdout] --> src/main.rs:1484:9 [INFO] [stdout] | [INFO] [stdout] 1484 | let mut studio_playing = false; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_studio_playing` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `studio_is_playing` [INFO] [stdout] --> src/main.rs:1487:9 [INFO] [stdout] | [INFO] [stdout] 1487 | let mut studio_is_playing = false; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_studio_is_playing` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `studio_current_playing_file` is assigned to, but never used [INFO] [stdout] --> src/main.rs:1488:9 [INFO] [stdout] | [INFO] [stdout] 1488 | let mut studio_current_playing_file: Option = None; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_studio_current_playing_file` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `studio_generate_clicked` [INFO] [stdout] --> src/main.rs:1492:9 [INFO] [stdout] | [INFO] [stdout] 1492 | let mut studio_generate_clicked = false; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_studio_generate_clicked` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `studio_generation_message` [INFO] [stdout] --> src/main.rs:1493:9 [INFO] [stdout] | [INFO] [stdout] 1493 | let mut studio_generation_message: Option<(String, f64)> = None; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_studio_generation_message` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/main.rs:1829:29 [INFO] [stdout] | [INFO] [stdout] 1829 | Err(e) => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tuner_click` [INFO] [stdout] --> src/main.rs:1999:46 [INFO] [stdout] | [INFO] [stdout] 1999 | let (new_ssi, actual, enter, tuner_click, import_click, del_idx) = [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tuner_click` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `studio_rendering` is never read [INFO] [stdout] --> src/main.rs:1753:21 [INFO] [stdout] | [INFO] [stdout] 1753 | studio_rendering = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 1806 | studio_rendering = false; [INFO] [stdout] | ------------------------ `studio_rendering` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `studio_rendering` is never read [INFO] [stdout] --> src/main.rs:1837:21 [INFO] [stdout] | [INFO] [stdout] 1837 | studio_rendering = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 1855 | studio_rendering = false; [INFO] [stdout] | ------------------------ `studio_rendering` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `studio_rendering` is never read [INFO] [stdout] --> src/main.rs:1860:21 [INFO] [stdout] | [INFO] [stdout] 1860 | studio_rendering = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 1874 | studio_rendering = false; [INFO] [stdout] | ------------------------ `studio_rendering` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `studio_current_playing_file` is never read [INFO] [stdout] --> src/main.rs:1720:37 [INFO] [stdout] | [INFO] [stdout] 1720 | ... studio_current_playing_file = Some(file_path); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `studio_current_playing_file` is never read [INFO] [stdout] --> src/main.rs:1709:25 [INFO] [stdout] | [INFO] [stdout] 1709 | studio_current_playing_file = None; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `studio_current_playing_file` is never read [INFO] [stdout] --> src/main.rs:1747:25 [INFO] [stdout] | [INFO] [stdout] 1747 | studio_current_playing_file = None; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `studio_current_playing_file` is never read [INFO] [stdout] --> src/main.rs:1903:25 [INFO] [stdout] | [INFO] [stdout] 1903 | studio_current_playing_file = None; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `studio_current_playing_file` is never read [INFO] [stdout] --> src/main.rs:1893:25 [INFO] [stdout] | [INFO] [stdout] 1893 | studio_current_playing_file = None; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `studio_current_playing_file` is never read [INFO] [stdout] --> src/main.rs:1699:25 [INFO] [stdout] | [INFO] [stdout] 1699 | studio_current_playing_file = None; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `studio_current_playing_file` is never read [INFO] [stdout] --> src/main.rs:1691:25 [INFO] [stdout] | [INFO] [stdout] 1691 | studio_current_playing_file = None; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `tuner_rename_cursor` is never read [INFO] [stdout] --> src/main.rs:2367:17 [INFO] [stdout] | [INFO] [stdout] 2367 | tuner_rename_cursor = new_cursor; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 2400 | tuner_rename_cursor = 0; [INFO] [stdout] | ----------------------- `tuner_rename_cursor` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `tuner_rename_cursor` is never read [INFO] [stdout] --> src/main.rs:2400:21 [INFO] [stdout] | [INFO] [stdout] 2400 | tuner_rename_cursor = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 2409 | tuner_rename_cursor = tuner_rename_buffer.len(); [INFO] [stdout] | ----------------------------------------------- `tuner_rename_cursor` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `tuner_rename_cursor` is never read [INFO] [stdout] --> src/main.rs:2409:21 [INFO] [stdout] | [INFO] [stdout] 2409 | tuner_rename_cursor = tuner_rename_buffer.len(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 2413 | tuner_rename_cursor = new_cursor; [INFO] [stdout] | -------------------------------- `tuner_rename_cursor` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `tuner_rename_selection` is never read [INFO] [stdout] --> src/main.rs:2368:17 [INFO] [stdout] | [INFO] [stdout] 2368 | tuner_rename_selection = new_selection; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 2401 | tuner_rename_selection = None; [INFO] [stdout] | ----------------------------- `tuner_rename_selection` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `tuner_rename_selection` is never read [INFO] [stdout] --> src/main.rs:2401:21 [INFO] [stdout] | [INFO] [stdout] 2401 | tuner_rename_selection = None; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 2410 | tuner_rename_selection = Some((0, tuner_rename_buffer.len())); // Выделяем всё [INFO] [stdout] | ------------------------------------------------------------- `tuner_rename_selection` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `tuner_rename_selection` is never read [INFO] [stdout] --> src/main.rs:2410:21 [INFO] [stdout] | [INFO] [stdout] 2410 | tuner_rename_selection = Some((0, tuner_rename_buffer.len())); // Выделяем всё [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 2414 | tuner_rename_selection = new_selection; [INFO] [stdout] | -------------------------------------- `tuner_rename_selection` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tf` [INFO] [stdout] --> src/theme.rs:590:39 [INFO] [stdout] | [INFO] [stdout] 590 | sx: f32, sy: f32, def: &CloudDef, tf: f32, light: &SunLight [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_tf` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tuning` [INFO] [stdout] --> src/lesson_game.rs:148:5 [INFO] [stdout] | [INFO] [stdout] 148 | tuning: &[f32; NUM_STRINGS], [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_tuning` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tuning` [INFO] [stdout] --> src/midi_parser.rs:32:35 [INFO] [stdout] | [INFO] [stdout] 32 | pub fn pitch_to_guitar(pitch: u8, tuning: &[f32; 6]) -> Option<(usize, usize)> { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_tuning` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `studio_playing` [INFO] [stdout] --> src/main.rs:1484:9 [INFO] [stdout] | [INFO] [stdout] 1484 | let mut studio_playing = false; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_studio_playing` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `studio_is_playing` [INFO] [stdout] --> src/main.rs:1487:9 [INFO] [stdout] | [INFO] [stdout] 1487 | let mut studio_is_playing = false; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_studio_is_playing` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `studio_current_playing_file` is assigned to, but never used [INFO] [stdout] --> src/main.rs:1488:9 [INFO] [stdout] | [INFO] [stdout] 1488 | let mut studio_current_playing_file: Option = None; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_studio_current_playing_file` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `studio_generate_clicked` [INFO] [stdout] --> src/main.rs:1492:9 [INFO] [stdout] | [INFO] [stdout] 1492 | let mut studio_generate_clicked = false; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_studio_generate_clicked` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `studio_generation_message` [INFO] [stdout] --> src/main.rs:1493:9 [INFO] [stdout] | [INFO] [stdout] 1493 | let mut studio_generation_message: Option<(String, f64)> = None; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_studio_generation_message` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/main.rs:1829:29 [INFO] [stdout] | [INFO] [stdout] 1829 | Err(e) => { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tuner_click` [INFO] [stdout] --> src/main.rs:1999:46 [INFO] [stdout] | [INFO] [stdout] 1999 | let (new_ssi, actual, enter, tuner_click, import_click, del_idx) = [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tuner_click` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `studio_rendering` is never read [INFO] [stdout] --> src/main.rs:1753:21 [INFO] [stdout] | [INFO] [stdout] 1753 | studio_rendering = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 1806 | studio_rendering = false; [INFO] [stdout] | ------------------------ `studio_rendering` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `studio_rendering` is never read [INFO] [stdout] --> src/main.rs:1837:21 [INFO] [stdout] | [INFO] [stdout] 1837 | studio_rendering = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 1855 | studio_rendering = false; [INFO] [stdout] | ------------------------ `studio_rendering` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `studio_rendering` is never read [INFO] [stdout] --> src/main.rs:1860:21 [INFO] [stdout] | [INFO] [stdout] 1860 | studio_rendering = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 1874 | studio_rendering = false; [INFO] [stdout] | ------------------------ `studio_rendering` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `studio_current_playing_file` is never read [INFO] [stdout] --> src/main.rs:1720:37 [INFO] [stdout] | [INFO] [stdout] 1720 | ... studio_current_playing_file = Some(file_path); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `studio_current_playing_file` is never read [INFO] [stdout] --> src/main.rs:1709:25 [INFO] [stdout] | [INFO] [stdout] 1709 | studio_current_playing_file = None; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `studio_current_playing_file` is never read [INFO] [stdout] --> src/main.rs:1747:25 [INFO] [stdout] | [INFO] [stdout] 1747 | studio_current_playing_file = None; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `studio_current_playing_file` is never read [INFO] [stdout] --> src/main.rs:1903:25 [INFO] [stdout] | [INFO] [stdout] 1903 | studio_current_playing_file = None; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `studio_current_playing_file` is never read [INFO] [stdout] --> src/main.rs:1893:25 [INFO] [stdout] | [INFO] [stdout] 1893 | studio_current_playing_file = None; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `studio_current_playing_file` is never read [INFO] [stdout] --> src/main.rs:1699:25 [INFO] [stdout] | [INFO] [stdout] 1699 | studio_current_playing_file = None; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `studio_current_playing_file` is never read [INFO] [stdout] --> src/main.rs:1691:25 [INFO] [stdout] | [INFO] [stdout] 1691 | studio_current_playing_file = None; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `tuner_rename_cursor` is never read [INFO] [stdout] --> src/main.rs:2367:17 [INFO] [stdout] | [INFO] [stdout] 2367 | tuner_rename_cursor = new_cursor; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 2400 | tuner_rename_cursor = 0; [INFO] [stdout] | ----------------------- `tuner_rename_cursor` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `tuner_rename_cursor` is never read [INFO] [stdout] --> src/main.rs:2400:21 [INFO] [stdout] | [INFO] [stdout] 2400 | tuner_rename_cursor = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 2409 | tuner_rename_cursor = tuner_rename_buffer.len(); [INFO] [stdout] | ----------------------------------------------- `tuner_rename_cursor` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `tuner_rename_cursor` is never read [INFO] [stdout] --> src/main.rs:2409:21 [INFO] [stdout] | [INFO] [stdout] 2409 | tuner_rename_cursor = tuner_rename_buffer.len(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 2413 | tuner_rename_cursor = new_cursor; [INFO] [stdout] | -------------------------------- `tuner_rename_cursor` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `tuner_rename_selection` is never read [INFO] [stdout] --> src/main.rs:2368:17 [INFO] [stdout] | [INFO] [stdout] 2368 | tuner_rename_selection = new_selection; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 2401 | tuner_rename_selection = None; [INFO] [stdout] | ----------------------------- `tuner_rename_selection` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `tuner_rename_selection` is never read [INFO] [stdout] --> src/main.rs:2401:21 [INFO] [stdout] | [INFO] [stdout] 2401 | tuner_rename_selection = None; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 2410 | tuner_rename_selection = Some((0, tuner_rename_buffer.len())); // Выделяем всё [INFO] [stdout] | ------------------------------------------------------------- `tuner_rename_selection` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `tuner_rename_selection` is never read [INFO] [stdout] --> src/main.rs:2410:21 [INFO] [stdout] | [INFO] [stdout] 2410 | tuner_rename_selection = Some((0, tuner_rename_buffer.len())); // Выделяем всё [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 2414 | tuner_rename_selection = new_selection; [INFO] [stdout] | -------------------------------------- `tuner_rename_selection` is overwritten here before the previous value is read [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `RawNote` is more private than the item `group_notes_into_events` [INFO] [stdout] --> src/parser.rs:394:1 [INFO] [stdout] | [INFO] [stdout] 394 | pub fn group_notes_into_events(notes: &[RawNote]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `group_notes_into_events` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `RawNote` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/parser.rs:102:1 [INFO] [stdout] | [INFO] [stdout] 102 | struct RawNote { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(private_interfaces)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `add_mic_detection` is never used [INFO] [stdout] --> src/main.rs:429:8 [INFO] [stdout] | [INFO] [stdout] 410 | impl GameLogger { [INFO] [stdout] | --------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 429 | fn add_mic_detection(&mut self, time: f64, freq: f32) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TunerState` is never constructed [INFO] [stdout] --> src/synth.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct TunerState { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `update` are never used [INFO] [stdout] --> src/synth.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 18 | impl TunerState { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 19 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 28 | pub fn update(&mut self, freq: Option) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `NoteInfo` is never constructed [INFO] [stdout] --> src/synth.rs:51:8 [INFO] [stdout] | [INFO] [stdout] 51 | struct NoteInfo { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `calculate_note_info` is never used [INFO] [stdout] --> src/synth.rs:56:4 [INFO] [stdout] | [INFO] [stdout] 56 | fn calculate_note_info(freq: f32) -> NoteInfo { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `GuitarPlayer` is never constructed [INFO] [stdout] --> src/synth.rs:79:12 [INFO] [stdout] | [INFO] [stdout] 79 | pub struct GuitarPlayer { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/synth.rs:87:12 [INFO] [stdout] | [INFO] [stdout] 86 | impl GuitarPlayer { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 87 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 105 | pub fn load_string_samples(&mut self, string_idx: usize, file_path: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 113 | pub fn play_note(&self, string_idx: usize, fret: usize, volume: f32, _sound_duration: f64) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 149 | pub fn stop_all(&self) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 156 | pub fn pause(&self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 163 | pub fn resume(&self) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 170 | pub fn clear(&self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 177 | pub fn is_empty(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 183 | pub fn set_volume(&self, volume: f32) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `host` is never read [INFO] [stdout] --> src/audio_engine.rs:398:5 [INFO] [stdout] | [INFO] [stdout] 397 | pub struct OutputController { [INFO] [stdout] | ---------------- field in this struct [INFO] [stdout] 398 | host: cpal::Host, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `save_test_wav` is never used [INFO] [stdout] --> src/audio_engine.rs:568:8 [INFO] [stdout] | [INFO] [stdout] 568 | pub fn save_test_wav(filename: &str, samples: &[f32], sample_rate: u32) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `generate_wav` is never used [INFO] [stdout] --> src/audio_engine.rs:591:8 [INFO] [stdout] | [INFO] [stdout] 591 | pub fn generate_wav(freq: f32, dur: f32, _wt: WaveType) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `midi_to_freq` is never used [INFO] [stdout] --> src/audio_engine.rs:879:8 [INFO] [stdout] | [INFO] [stdout] 879 | pub fn midi_to_freq(midi: u8) -> f32 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_piano_keyboard` is never used [INFO] [stdout] --> src/graphics.rs:713:8 [INFO] [stdout] | [INFO] [stdout] 713 | pub fn draw_piano_keyboard( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_glow_line` is never used [INFO] [stdout] --> src/graphics.rs:1771:8 [INFO] [stdout] | [INFO] [stdout] 1771 | pub fn draw_glow_line( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_overlay_buttons` is never used [INFO] [stdout] --> src/graphics.rs:3991:8 [INFO] [stdout] | [INFO] [stdout] 3991 | pub fn draw_overlay_buttons( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FA_MUSIC` is never used [INFO] [stdout] --> src/graphics.rs:4038:11 [INFO] [stdout] | [INFO] [stdout] 4038 | pub const FA_MUSIC: &str = "\u{F001}"; // 🎵 music [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FA_ARROW_LEFT` is never used [INFO] [stdout] --> src/graphics.rs:4040:11 [INFO] [stdout] | [INFO] [stdout] 4040 | pub const FA_ARROW_LEFT:&str = "\u{F060}"; // ← back [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FA_STAR` is never used [INFO] [stdout] --> src/graphics.rs:4041:11 [INFO] [stdout] | [INFO] [stdout] 4041 | pub const FA_STAR: &str = "\u{F005}"; // ★ star [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FA_COG` is never used [INFO] [stdout] --> src/graphics.rs:4042:11 [INFO] [stdout] | [INFO] [stdout] 4042 | pub const FA_COG: &str = "\u{F013}"; // ⚙ settings [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FA_GLOBE` is never used [INFO] [stdout] --> src/graphics.rs:4043:11 [INFO] [stdout] | [INFO] [stdout] 4043 | pub const FA_GLOBE: &str = "\u{F0AC}"; // 🌐 language [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_step_links` is never used [INFO] [stdout] --> src/graphics.rs:4637:4 [INFO] [stdout] | [INFO] [stdout] 4637 | fn draw_step_links( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `estimate_line_count` is never used [INFO] [stdout] --> src/graphics.rs:4691:4 [INFO] [stdout] | [INFO] [stdout] 4691 | fn estimate_line_count( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `gameplay` is never read [INFO] [stdout] --> src/config.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct AppConfig { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 12 | pub gameplay: GameplayConfig, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `AppConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `base_width` is never read [INFO] [stdout] --> src/config.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct DisplayConfig { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] 17 | pub base_width: f32, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DisplayConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `tab_height` and `track_visible_frets` are never read [INFO] [stdout] --> src/config.rs:42:9 [INFO] [stdout] | [INFO] [stdout] 40 | pub struct TracksConfig { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 41 | pub notation_height: f32, [INFO] [stdout] 42 | pub tab_height: f32, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | pub track_visible_frets: f32, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TracksConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `waveform_height` and `freq_graph_height` are never read [INFO] [stdout] --> src/config.rs:51:9 [INFO] [stdout] | [INFO] [stdout] 49 | pub struct WidgetsConfig { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 50 | pub waveform_width: f32, [INFO] [stdout] 51 | pub waveform_height: f32, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 52 | pub freq_graph_width: f32, [INFO] [stdout] 53 | pub freq_graph_height: f32, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `WidgetsConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `note_speed`, `hit_tolerance`, and `hit_tolerance_freq` are never read [INFO] [stdout] --> src/config.rs:58:9 [INFO] [stdout] | [INFO] [stdout] 57 | pub struct GameplayConfig { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 58 | pub note_speed: f32, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 59 | pub hit_tolerance: f32, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 60 | pub hit_tolerance_freq: f32, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `GameplayConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `id` is never read [INFO] [stdout] --> src/lessons.rs:102:9 [INFO] [stdout] | [INFO] [stdout] 101 | pub struct Lesson { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] 102 | pub id: String, [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = note: `Lesson` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `next`, `panel_bg_alpha`, `btn_bg`, `btn_text`, and `btn_border` are never used [INFO] [stdout] --> src/theme.rs:60:12 [INFO] [stdout] | [INFO] [stdout] 46 | impl ThemeState { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 60 | pub fn next(&mut self) { self.index = (self.index + 1) % THEMES.len(); } [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 65 | pub fn panel_bg_alpha(&self, night_alpha: f32) -> Color { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 80 | pub fn btn_bg(&self, hovered: bool) -> Color { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub fn btn_text(&self, hovered: bool) -> Color { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 88 | pub fn btn_border(&self, hovered: bool) -> Color { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `day_panel_bg` is never used [INFO] [stdout] --> src/theme.rs:95:8 [INFO] [stdout] | [INFO] [stdout] 95 | pub fn day_panel_bg(night: Color) -> Color { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `adaptive_text` is never used [INFO] [stdout] --> src/theme.rs:866:8 [INFO] [stdout] | [INFO] [stdout] 866 | pub fn adaptive_text(is_day: bool) -> Color { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `z_order` is never read [INFO] [stdout] --> src/info_screen.rs:37:9 [INFO] [stdout] | [INFO] [stdout] 26 | pub struct InfoImage { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 37 | pub z_order: i32, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `InfoImage` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_empty` is never used [INFO] [stdout] --> src/info_screen.rs:110:12 [INFO] [stdout] | [INFO] [stdout] 70 | impl InfoFile { [INFO] [stdout] | ------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 110 | pub fn is_empty(&self) -> bool { self.sections.is_empty() } [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `confirmed` and `total` are never read [INFO] [stdout] --> src/game_types.rs:179:9 [INFO] [stdout] | [INFO] [stdout] 178 | pub struct LessonHitResult { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 179 | pub confirmed: usize, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 180 | pub total: usize, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LessonHitResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `none` is never used [INFO] [stdout] --> src/game_types.rs:187:12 [INFO] [stdout] | [INFO] [stdout] 186 | impl LessonHitResult { [INFO] [stdout] | -------------------- associated function in this implementation [INFO] [stdout] 187 | pub fn none() -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `velocity` and `channel` are never read [INFO] [stdout] --> src/midi_parser.rs:16:9 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct MidiNote { [INFO] [stdout] | -------- fields in this struct [INFO] [stdout] 15 | pub pitch: u8, // MIDI-номер ноты (0-127) [INFO] [stdout] 16 | pub velocity: u8, // Громкость (0-127) [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 19 | pub channel: u8, // MIDI-канал (0-15) [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MidiNote` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `pitch_to_freq` is never used [INFO] [stdout] --> src/midi_parser.rs:51:8 [INFO] [stdout] | [INFO] [stdout] 51 | pub fn pitch_to_freq(pitch: u8) -> f32 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `RawNote` is more private than the item `group_notes_into_events` [INFO] [stdout] --> src/parser.rs:394:1 [INFO] [stdout] | [INFO] [stdout] 394 | pub fn group_notes_into_events(notes: &[RawNote]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `group_notes_into_events` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `RawNote` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/parser.rs:102:1 [INFO] [stdout] | [INFO] [stdout] 102 | struct RawNote { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(private_interfaces)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `add_mic_detection` is never used [INFO] [stdout] --> src/main.rs:429:8 [INFO] [stdout] | [INFO] [stdout] 410 | impl GameLogger { [INFO] [stdout] | --------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 429 | fn add_mic_detection(&mut self, time: f64, freq: f32) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TunerState` is never constructed [INFO] [stdout] --> src/synth.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct TunerState { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `update` are never used [INFO] [stdout] --> src/synth.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 18 | impl TunerState { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 19 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 28 | pub fn update(&mut self, freq: Option) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `NoteInfo` is never constructed [INFO] [stdout] --> src/synth.rs:51:8 [INFO] [stdout] | [INFO] [stdout] 51 | struct NoteInfo { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `calculate_note_info` is never used [INFO] [stdout] --> src/synth.rs:56:4 [INFO] [stdout] | [INFO] [stdout] 56 | fn calculate_note_info(freq: f32) -> NoteInfo { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `GuitarPlayer` is never constructed [INFO] [stdout] --> src/synth.rs:79:12 [INFO] [stdout] | [INFO] [stdout] 79 | pub struct GuitarPlayer { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/synth.rs:87:12 [INFO] [stdout] | [INFO] [stdout] 86 | impl GuitarPlayer { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 87 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 105 | pub fn load_string_samples(&mut self, string_idx: usize, file_path: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 113 | pub fn play_note(&self, string_idx: usize, fret: usize, volume: f32, _sound_duration: f64) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 149 | pub fn stop_all(&self) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 156 | pub fn pause(&self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 163 | pub fn resume(&self) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 170 | pub fn clear(&self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 177 | pub fn is_empty(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 183 | pub fn set_volume(&self, volume: f32) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `host` is never read [INFO] [stdout] --> src/audio_engine.rs:398:5 [INFO] [stdout] | [INFO] [stdout] 397 | pub struct OutputController { [INFO] [stdout] | ---------------- field in this struct [INFO] [stdout] 398 | host: cpal::Host, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `save_test_wav` is never used [INFO] [stdout] --> src/audio_engine.rs:568:8 [INFO] [stdout] | [INFO] [stdout] 568 | pub fn save_test_wav(filename: &str, samples: &[f32], sample_rate: u32) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `generate_wav` is never used [INFO] [stdout] --> src/audio_engine.rs:591:8 [INFO] [stdout] | [INFO] [stdout] 591 | pub fn generate_wav(freq: f32, dur: f32, _wt: WaveType) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `midi_to_freq` is never used [INFO] [stdout] --> src/audio_engine.rs:879:8 [INFO] [stdout] | [INFO] [stdout] 879 | pub fn midi_to_freq(midi: u8) -> f32 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_piano_keyboard` is never used [INFO] [stdout] --> src/graphics.rs:713:8 [INFO] [stdout] | [INFO] [stdout] 713 | pub fn draw_piano_keyboard( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_glow_line` is never used [INFO] [stdout] --> src/graphics.rs:1771:8 [INFO] [stdout] | [INFO] [stdout] 1771 | pub fn draw_glow_line( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_overlay_buttons` is never used [INFO] [stdout] --> src/graphics.rs:3991:8 [INFO] [stdout] | [INFO] [stdout] 3991 | pub fn draw_overlay_buttons( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FA_MUSIC` is never used [INFO] [stdout] --> src/graphics.rs:4038:11 [INFO] [stdout] | [INFO] [stdout] 4038 | pub const FA_MUSIC: &str = "\u{F001}"; // 🎵 music [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FA_ARROW_LEFT` is never used [INFO] [stdout] --> src/graphics.rs:4040:11 [INFO] [stdout] | [INFO] [stdout] 4040 | pub const FA_ARROW_LEFT:&str = "\u{F060}"; // ← back [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FA_STAR` is never used [INFO] [stdout] --> src/graphics.rs:4041:11 [INFO] [stdout] | [INFO] [stdout] 4041 | pub const FA_STAR: &str = "\u{F005}"; // ★ star [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FA_COG` is never used [INFO] [stdout] --> src/graphics.rs:4042:11 [INFO] [stdout] | [INFO] [stdout] 4042 | pub const FA_COG: &str = "\u{F013}"; // ⚙ settings [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FA_GLOBE` is never used [INFO] [stdout] --> src/graphics.rs:4043:11 [INFO] [stdout] | [INFO] [stdout] 4043 | pub const FA_GLOBE: &str = "\u{F0AC}"; // 🌐 language [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `draw_step_links` is never used [INFO] [stdout] --> src/graphics.rs:4637:4 [INFO] [stdout] | [INFO] [stdout] 4637 | fn draw_step_links( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `estimate_line_count` is never used [INFO] [stdout] --> src/graphics.rs:4691:4 [INFO] [stdout] | [INFO] [stdout] 4691 | fn estimate_line_count( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `gameplay` is never read [INFO] [stdout] --> src/config.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct AppConfig { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 12 | pub gameplay: GameplayConfig, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `AppConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `base_width` is never read [INFO] [stdout] --> src/config.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct DisplayConfig { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] 17 | pub base_width: f32, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DisplayConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `tab_height` and `track_visible_frets` are never read [INFO] [stdout] --> src/config.rs:42:9 [INFO] [stdout] | [INFO] [stdout] 40 | pub struct TracksConfig { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 41 | pub notation_height: f32, [INFO] [stdout] 42 | pub tab_height: f32, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | pub track_visible_frets: f32, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TracksConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `waveform_height` and `freq_graph_height` are never read [INFO] [stdout] --> src/config.rs:51:9 [INFO] [stdout] | [INFO] [stdout] 49 | pub struct WidgetsConfig { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 50 | pub waveform_width: f32, [INFO] [stdout] 51 | pub waveform_height: f32, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 52 | pub freq_graph_width: f32, [INFO] [stdout] 53 | pub freq_graph_height: f32, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `WidgetsConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `note_speed`, `hit_tolerance`, and `hit_tolerance_freq` are never read [INFO] [stdout] --> src/config.rs:58:9 [INFO] [stdout] | [INFO] [stdout] 57 | pub struct GameplayConfig { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 58 | pub note_speed: f32, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 59 | pub hit_tolerance: f32, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 60 | pub hit_tolerance_freq: f32, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `GameplayConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `id` is never read [INFO] [stdout] --> src/lessons.rs:102:9 [INFO] [stdout] | [INFO] [stdout] 101 | pub struct Lesson { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] 102 | pub id: String, [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = note: `Lesson` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `next`, `panel_bg_alpha`, `btn_bg`, `btn_text`, and `btn_border` are never used [INFO] [stdout] --> src/theme.rs:60:12 [INFO] [stdout] | [INFO] [stdout] 46 | impl ThemeState { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 60 | pub fn next(&mut self) { self.index = (self.index + 1) % THEMES.len(); } [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 65 | pub fn panel_bg_alpha(&self, night_alpha: f32) -> Color { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 80 | pub fn btn_bg(&self, hovered: bool) -> Color { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub fn btn_text(&self, hovered: bool) -> Color { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 88 | pub fn btn_border(&self, hovered: bool) -> Color { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `day_panel_bg` is never used [INFO] [stdout] --> src/theme.rs:95:8 [INFO] [stdout] | [INFO] [stdout] 95 | pub fn day_panel_bg(night: Color) -> Color { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `adaptive_text` is never used [INFO] [stdout] --> src/theme.rs:866:8 [INFO] [stdout] | [INFO] [stdout] 866 | pub fn adaptive_text(is_day: bool) -> Color { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `z_order` is never read [INFO] [stdout] --> src/info_screen.rs:37:9 [INFO] [stdout] | [INFO] [stdout] 26 | pub struct InfoImage { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 37 | pub z_order: i32, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `InfoImage` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_empty` is never used [INFO] [stdout] --> src/info_screen.rs:110:12 [INFO] [stdout] | [INFO] [stdout] 70 | impl InfoFile { [INFO] [stdout] | ------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 110 | pub fn is_empty(&self) -> bool { self.sections.is_empty() } [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `confirmed` and `total` are never read [INFO] [stdout] --> src/game_types.rs:179:9 [INFO] [stdout] | [INFO] [stdout] 178 | pub struct LessonHitResult { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 179 | pub confirmed: usize, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 180 | pub total: usize, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LessonHitResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `none` is never used [INFO] [stdout] --> src/game_types.rs:187:12 [INFO] [stdout] | [INFO] [stdout] 186 | impl LessonHitResult { [INFO] [stdout] | -------------------- associated function in this implementation [INFO] [stdout] 187 | pub fn none() -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `velocity` and `channel` are never read [INFO] [stdout] --> src/midi_parser.rs:16:9 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct MidiNote { [INFO] [stdout] | -------- fields in this struct [INFO] [stdout] 15 | pub pitch: u8, // MIDI-номер ноты (0-127) [INFO] [stdout] 16 | pub velocity: u8, // Громкость (0-127) [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 19 | pub channel: u8, // MIDI-канал (0-15) [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MidiNote` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `pitch_to_freq` is never used [INFO] [stdout] --> src/midi_parser.rs:51:8 [INFO] [stdout] | [INFO] [stdout] 51 | pub fn pitch_to_freq(pitch: u8) -> f32 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 52.66s [INFO] running `Command { std: "docker" "inspect" "1e88f4aaaa625942734b4b9a34ccbecf52cd5ee96f84cd3bf3b9b24d617d9355", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "1e88f4aaaa625942734b4b9a34ccbecf52cd5ee96f84cd3bf3b9b24d617d9355", kill_on_drop: false }` [INFO] [stdout] 1e88f4aaaa625942734b4b9a34ccbecf52cd5ee96f84cd3bf3b9b24d617d9355