mirror of
https://github.com/cargo-bins/cargo-binstall.git
synced 2025-04-23 05:58:42 +00:00
Refactor: Mv TarEntriesVisitor
to mod async_extracter
Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
This commit is contained in:
parent
467f7f6834
commit
2091345ce0
3 changed files with 13 additions and 14 deletions
|
@ -22,7 +22,6 @@ mod ui_thread;
|
|||
pub use ui_thread::UIThread;
|
||||
|
||||
mod extracter;
|
||||
pub use extracter::TarEntriesVisitor;
|
||||
|
||||
mod readable_rx;
|
||||
|
||||
|
|
|
@ -232,6 +232,18 @@ where
|
|||
.await
|
||||
}
|
||||
|
||||
/// Visitor must iterate over all entries.
|
||||
/// Entires can be in arbitary order.
|
||||
pub trait TarEntriesVisitor {
|
||||
fn visit<R: Read>(&mut self, entries: Entries<'_, R>) -> Result<(), BinstallError>;
|
||||
}
|
||||
|
||||
impl<V: TarEntriesVisitor> TarEntriesVisitor for &mut V {
|
||||
fn visit<R: Read>(&mut self, entries: Entries<'_, R>) -> Result<(), BinstallError> {
|
||||
(*self).visit(entries)
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn extract_tar_based_stream_and_visit<V: TarEntriesVisitor + Debug + Send + 'static, E>(
|
||||
stream: impl Stream<Item = Result<Bytes, E>> + Unpin,
|
||||
fmt: TarBasedFmt,
|
||||
|
|
|
@ -4,25 +4,13 @@ use std::path::Path;
|
|||
|
||||
use flate2::bufread::GzDecoder;
|
||||
use log::debug;
|
||||
use tar::{Archive, Entries};
|
||||
use tar::Archive;
|
||||
use xz2::bufread::XzDecoder;
|
||||
use zip::read::ZipArchive;
|
||||
use zstd::stream::Decoder as ZstdDecoder;
|
||||
|
||||
use crate::{BinstallError, TarBasedFmt};
|
||||
|
||||
/// Visitor must iterate over all entries.
|
||||
/// Entires can be in arbitary order.
|
||||
pub trait TarEntriesVisitor {
|
||||
fn visit<R: Read>(&mut self, entries: Entries<'_, R>) -> Result<(), BinstallError>;
|
||||
}
|
||||
|
||||
impl<V: TarEntriesVisitor> TarEntriesVisitor for &mut V {
|
||||
fn visit<R: Read>(&mut self, entries: Entries<'_, R>) -> Result<(), BinstallError> {
|
||||
(*self).visit(entries)
|
||||
}
|
||||
}
|
||||
|
||||
pub(super) fn create_tar_decoder(
|
||||
dat: impl BufRead + 'static,
|
||||
fmt: TarBasedFmt,
|
||||
|
|
Loading…
Add table
Reference in a new issue