mirror of
https://github.com/cargo-bins/cargo-binstall.git
synced 2025-04-21 13:08:42 +00:00
Rm use of AutoAbortJoinHandle
in AsyncExtracter
Since there is no way to abort a blocking thread, using `AutoAbortJoinHandle` does not add any value. Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
This commit is contained in:
parent
1c3a672108
commit
32ad530329
1 changed files with 9 additions and 8 deletions
|
@ -7,9 +7,12 @@ use bytes::Bytes;
|
||||||
use futures_util::stream::{Stream, StreamExt};
|
use futures_util::stream::{Stream, StreamExt};
|
||||||
use scopeguard::{guard, Always, ScopeGuard};
|
use scopeguard::{guard, Always, ScopeGuard};
|
||||||
use tempfile::tempfile;
|
use tempfile::tempfile;
|
||||||
use tokio::{sync::mpsc, task::spawn_blocking};
|
use tokio::{
|
||||||
|
sync::mpsc,
|
||||||
|
task::{spawn_blocking, JoinHandle},
|
||||||
|
};
|
||||||
|
|
||||||
use super::{extracter::*, readable_rx::*, AutoAbortJoinHandle};
|
use super::{extracter::*, readable_rx::*};
|
||||||
use crate::{BinstallError, PkgFmt};
|
use crate::{BinstallError, PkgFmt};
|
||||||
|
|
||||||
pub(crate) enum Content {
|
pub(crate) enum Content {
|
||||||
|
@ -24,7 +27,7 @@ pub(crate) enum Content {
|
||||||
struct AsyncExtracterInner {
|
struct AsyncExtracterInner {
|
||||||
/// Use AutoAbortJoinHandle so that the task
|
/// Use AutoAbortJoinHandle so that the task
|
||||||
/// will be cancelled on failure.
|
/// will be cancelled on failure.
|
||||||
handle: AutoAbortJoinHandle<Result<(), BinstallError>>,
|
handle: JoinHandle<Result<(), BinstallError>>,
|
||||||
tx: mpsc::Sender<Content>,
|
tx: mpsc::Sender<Content>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,7 +42,7 @@ impl AsyncExtracterInner {
|
||||||
let path = path.to_owned();
|
let path = path.to_owned();
|
||||||
let (tx, mut rx) = mpsc::channel::<Content>(100);
|
let (tx, mut rx) = mpsc::channel::<Content>(100);
|
||||||
|
|
||||||
let handle = AutoAbortJoinHandle::new(spawn_blocking(move || {
|
let handle = spawn_blocking(move || {
|
||||||
fs::create_dir_all(path.parent().unwrap())?;
|
fs::create_dir_all(path.parent().unwrap())?;
|
||||||
|
|
||||||
match fmt {
|
match fmt {
|
||||||
|
@ -77,7 +80,7 @@ impl AsyncExtracterInner {
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}));
|
});
|
||||||
|
|
||||||
Self { handle, tx }
|
Self { handle, tx }
|
||||||
}
|
}
|
||||||
|
@ -121,9 +124,7 @@ impl AsyncExtracterInner {
|
||||||
Self::wait(&mut self.handle).await
|
Self::wait(&mut self.handle).await
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn wait(
|
async fn wait(handle: &mut JoinHandle<Result<(), BinstallError>>) -> Result<(), BinstallError> {
|
||||||
handle: &mut AutoAbortJoinHandle<Result<(), BinstallError>>,
|
|
||||||
) -> Result<(), BinstallError> {
|
|
||||||
match handle.await {
|
match handle.await {
|
||||||
Ok(res) => res,
|
Ok(res) => res,
|
||||||
Err(join_err) => Err(io::Error::new(io::ErrorKind::Other, join_err).into()),
|
Err(join_err) => Err(io::Error::new(io::ErrorKind::Other, join_err).into()),
|
||||||
|
|
Loading…
Add table
Reference in a new issue