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 gh_crate_meta::*;
pub use log::debug; pub use log::debug;
pub use quickinstall::*; pub use quickinstall::*;
use tokio::task::JoinHandle;
use crate::{BinstallError, PkgFmt, PkgMeta}; use crate::{AutoAbortJoinHandle, BinstallError, PkgFmt, PkgMeta};
mod gh_crate_meta; mod gh_crate_meta;
mod quickinstall; mod quickinstall;
@ -62,10 +61,12 @@ impl MultiFetcher {
.fetchers .fetchers
.iter() .iter()
.cloned() .cloned()
.map(|fetcher| ( .map(|fetcher| {
fetcher.clone(), (
AutoAbortJoinHandle(tokio::spawn(async move { fetcher.check().await })), fetcher.clone(),
)) AutoAbortJoinHandle(tokio::spawn(async move { fetcher.check().await })),
)
})
.collect(); .collect();
for (fetcher, mut handle) in handles { for (fetcher, mut handle) in handles {
@ -92,12 +93,3 @@ impl MultiFetcher {
None 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();
}
}