Optimize Download::and_visit_tar: Use trait object to avoid monomorphization (#644)

by removing method `TarEntriesVisitor::finish` and associated type
`TarEntriesVisitor::Target`.

Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
This commit is contained in:
Jiahao XU 2023-01-04 11:11:10 +11:00 committed by GitHub
parent 1ab979cde8
commit 959b465d81
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 30 additions and 37 deletions

View file

@ -52,7 +52,11 @@ pub async fn fetch_crate_cratesio(
let manifest_dir_path: PathBuf = format!("{name}-{version_name}").into();
Ok(Download::new(client, Url::parse(&crate_url)?)
.and_visit_tar(TarBasedFmt::Tgz, ManifestVisitor::new(manifest_dir_path))
.await?)
let mut manifest_visitor = ManifestVisitor::new(manifest_dir_path);
Download::new(client, Url::parse(&crate_url)?)
.and_visit_tar(TarBasedFmt::Tgz, &mut manifest_visitor)
.await?;
manifest_visitor.load_manifest()
}