diff options
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(); + } + } } |
