Refactor: Mv AutoAbortJoinHandle into helpers

Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
This commit is contained in:
Jiahao XU 2022-06-08 20:44:20 +10:00
parent 6367bfc1e3
commit 12931fc024
No known key found for this signature in database
GPG key ID: 591C0B03040416D6
2 changed files with 16 additions and 15 deletions

View file

@ -4,9 +4,8 @@ use std::sync::Arc;
pub use gh_crate_meta::*;
pub use log::debug;
pub use quickinstall::*;
use tokio::task::JoinHandle;
use crate::{BinstallError, PkgFmt, PkgMeta};
use crate::{AutoAbortJoinHandle, BinstallError, PkgFmt, PkgMeta};
mod gh_crate_meta;
mod quickinstall;
@ -62,10 +61,12 @@ impl MultiFetcher {
.fetchers
.iter()
.cloned()
.map(|fetcher| (
fetcher.clone(),
AutoAbortJoinHandle(tokio::spawn(async move { fetcher.check().await })),
))
.map(|fetcher| {
(
fetcher.clone(),
AutoAbortJoinHandle(tokio::spawn(async move { fetcher.check().await })),
)
})
.collect();
for (fetcher, mut handle) in handles {
@ -92,12 +93,3 @@ impl MultiFetcher {
None
}
}
#[derive(Debug)]
struct AutoAbortJoinHandle(JoinHandle<Result<bool, BinstallError>>);
impl Drop for AutoAbortJoinHandle {
fn drop(&mut self) {
self.0.abort();
}
}

View file

@ -300,3 +300,12 @@ impl AsyncFileWriter {
}
}
}
#[derive(Debug)]
pub struct AutoAbortJoinHandle<T>(pub task::JoinHandle<T>);
impl<T> Drop for AutoAbortJoinHandle<T> {
fn drop(&mut self) {
self.0.abort();
}
}