From 81cc9a0b347255629d411323e7ff8fee4d5ec61d Mon Sep 17 00:00:00 2001 From: pablu Date: Wed, 3 Jun 2026 11:00:56 +0200 Subject: Implement drop for joining thread handle --- src/background_loader.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src/background_loader.rs') diff --git a/src/background_loader.rs b/src/background_loader.rs index ea9d331..111c943 100644 --- a/src/background_loader.rs +++ b/src/background_loader.rs @@ -14,7 +14,7 @@ pub enum LoaderMessage { #[derive(Debug)] pub struct PackageLoader { receiver: Receiver, - thread_handle: thread::JoinHandle<()>, + thread_handle: Option>, } impl PackageLoader { @@ -35,13 +35,19 @@ impl PackageLoader { PackageLoader { receiver: rx, - thread_handle, + thread_handle: Some(thread_handle), } } pub fn try_recv(&self) -> Option { self.receiver.try_recv().ok() } +} - //TODO: join thread back to main thread after packages were loaded +impl Drop for PackageLoader { + fn drop(&mut self) { + if let Some(handle) = self.thread_handle.take() { + _ = handle.join(); + } + } } -- cgit 1.3.1