From 39648f778195af1fdb3ba9ad798c43b22881f5ae Mon Sep 17 00:00:00 2001 From: Tarasov Aleksandr <55220741+arabianq@users.noreply.github.com> Date: Sun, 8 Mar 2026 00:24:25 +0300 Subject: [PATCH] refactor(gui): replace unsafe unwrap with idiomatic `if let Some` in input handling (#22) This commit addresses a code health issue in `src/gui/input.rs` where an `.is_some()` check was followed by an unsafe `.unwrap()` on `self.app_state.selected_file`. The logic has been updated to use the idiomatic `if let Some(path) = self.app_state.selected_file.clone()` pattern. The `.clone()` is necessary because the subsequent methods (`self.play_file` and `self.stop`) require a mutable borrow (`&mut self`), which would conflict with an immutable borrow of `self.app_state.selected_file`. This change ensures the code is safe and panic-free while satisfying Rust's borrow checker rules. Behavior remains unchanged. Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> --- src/gui/input.rs | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/gui/input.rs b/src/gui/input.rs index 60018cc..e6d042b 100644 --- a/src/gui/input.rs +++ b/src/gui/input.rs @@ -57,17 +57,18 @@ impl SoundpadGui { } // Play selected file on Enter - if self.key_pressed(ctx, Key::Enter) && self.app_state.selected_file.is_some() { - let path = &self.app_state.selected_file.clone().unwrap(); - if modifiers.ctrl { - self.play_file(path, true); - } else if modifiers.shift - && let Some(last_track) = self.audio_player_state.tracks.last() - { - self.stop(Some(last_track.id)); - self.play_file(path, true); - } else { - self.play_file(path, false); + if self.key_pressed(ctx, Key::Enter) { + if let Some(path) = self.app_state.selected_file.clone() { + if modifiers.ctrl { + self.play_file(&path, true); + } else if modifiers.shift + && let Some(last_track) = self.audio_player_state.tracks.last() + { + self.stop(Some(last_track.id)); + self.play_file(&path, true); + } else { + self.play_file(&path, false); + } } }