diff options
| author | pablu <me@pablu.de> | 2026-06-03 11:00:56 +0200 |
|---|---|---|
| committer | pablu <me@pablu.de> | 2026-06-03 11:00:56 +0200 |
| commit | 81cc9a0b347255629d411323e7ff8fee4d5ec61d (patch) | |
| tree | a5704e90a30620fa86dd125aa5f8ed3ffae5ec78 /src/background_loader.rs | |
| parent | c5a634bd5408ea5174035abf8713953e7fc48e08 (diff) | |
Implement drop for joining thread handle
Diffstat (limited to 'src/background_loader.rs')
| -rw-r--r-- | src/background_loader.rs | 12 |
1 files changed, 9 insertions, 3 deletions
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<LoaderMessage>, - thread_handle: thread::JoinHandle<()>, + thread_handle: Option<thread::JoinHandle<()>>, } impl PackageLoader { @@ -35,13 +35,19 @@ impl PackageLoader { PackageLoader { receiver: rx, - thread_handle, + thread_handle: Some(thread_handle), } } pub fn try_recv(&self) -> Option<LoaderMessage> { 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(); + } + } } |
