From f2f939b8909bf984a0ee16bd0646acbe2e21fdd5 Mon Sep 17 00:00:00 2001 From: Pavel Zwerschke Date: Fri, 28 Feb 2025 10:53:20 +0100 Subject: [PATCH] refactor: Create reader from opendal buffer --- Cargo.lock | 1 + crates/rattler_index/Cargo.toml | 1 + crates/rattler_index/src/lib.rs | 8 ++++---- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e73e25372..6c4b18b52 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4347,6 +4347,7 @@ name = "rattler_index" version = "0.21.0" dependencies = [ "anyhow", + "bytes", "clap", "clap-verbosity-flag", "console", diff --git a/crates/rattler_index/Cargo.toml b/crates/rattler_index/Cargo.toml index 2731005e1..e6e63a5a3 100644 --- a/crates/rattler_index/Cargo.toml +++ b/crates/rattler_index/Cargo.toml @@ -32,6 +32,7 @@ path = "src/main.rs" [dependencies] anyhow = { workspace = true } +bytes = { workspace = true } clap = { workspace = true, features = ["derive", "env"] } clap-verbosity-flag = { workspace = true, features = ["tracing"] } console = { workspace = true } diff --git a/crates/rattler_index/src/lib.rs b/crates/rattler_index/src/lib.rs index 078198351..83fd0deea 100644 --- a/crates/rattler_index/src/lib.rs +++ b/crates/rattler_index/src/lib.rs @@ -3,6 +3,7 @@ #![deny(missing_docs)] use anyhow::Result; +use bytes::buf::Buf; use fs_err::{self as fs}; use futures::future::try_join_all; use fxhash::FxHashMap; @@ -249,13 +250,12 @@ async fn index_subdir( )); let file_path = format!("{subdir}/{filename}"); let buffer = op.read(&file_path).await?; - let bytes = buffer.to_vec(); - let cursor = Cursor::new(bytes); + let reader = buffer.reader(); // We already know it's not None let archive_type = ArchiveType::try_from(&filename).unwrap(); let record = match archive_type { - ArchiveType::TarBz2 => package_record_from_tar_bz2_reader(cursor), - ArchiveType::Conda => package_record_from_conda_reader(cursor), + ArchiveType::TarBz2 => package_record_from_tar_bz2_reader(reader), + ArchiveType::Conda => package_record_from_conda_reader(reader), }?; pb.inc(1); Ok::<(String, PackageRecord), std::io::Error>((filename.clone(), record))