From 95fb1d86d8cca78e78413a18418125444d2a342a Mon Sep 17 00:00:00 2001 From: Chris Cochrun Date: Thu, 6 Mar 2025 15:20:28 -0600 Subject: [PATCH] trying to find a way to beat the borrow checker --- src/main.rs | 2 +- src/ui/library.rs | 30 +++++++----------------------- 2 files changed, 8 insertions(+), 24 deletions(-) diff --git a/src/main.rs b/src/main.rs index b944688..f0a0833 100644 --- a/src/main.rs +++ b/src/main.rs @@ -482,7 +482,7 @@ impl cosmic::Application for App { let task = library.update( library::Message::UpdateSong(song), ); - task.map(|m| { + task.map(|_m| { cosmic::app::Message::App(Message::None) }) } else { diff --git a/src/ui/library.rs b/src/ui/library.rs index a32274d..b07e2d4 100644 --- a/src/ui/library.rs +++ b/src/ui/library.rs @@ -101,24 +101,7 @@ impl<'a> Library { Task::none() } Message::UpdateSong(song) => { - let Some((kind, index)) = self.editing_item else { - error!("Not editing an item"); - return Task::none(); - }; - - if kind != LibraryKind::Song { - error!("Not editing a song item"); - return Task::none(); - } - let db = self.db.clone(); - let song_library = self.song_library.clone(); - - let future = update_song( - song, - index as usize, - db, - song_library, - ); + let future = self.update_song(song); Task::perform(future, |r| { match r { Ok(_) => (), @@ -371,11 +354,9 @@ impl<'a> Library { .into() } - pub(crate) async fn update_song( - &'a mut self, + pub async fn update_song<'b>( + &'b mut self, song: Song, - mut db: SqliteConnection, - mut song_library: Model, ) -> Result<()> { let Some((kind, index)) = self.editing_item else { return Err(miette!("Not editing an item")); @@ -384,9 +365,12 @@ impl<'a> Library { if kind != LibraryKind::Song { return Err(miette!("Not editing a song item")); } + let mut db = self.db.acquire().await.expect("foo"); if let Some(_) = self.song_library.items.get(index as usize) { - song_library.update_song(song, index, &mut db).await?; + self.song_library + .update_song(song, index, &mut db) + .await?; Ok(()) } else { Err(miette!("Song not found"))