From c3e37e22d12edc3f4b3b17960290db0a97a6cef3 Mon Sep 17 00:00:00 2001 From: ttyS3 Date: Fri, 6 Sep 2024 16:00:27 +0000 Subject: [PATCH] refactor(rar): simplify list_archive logic and remove UnrarError Simplify the list_archive function by combining archive creation and listing steps. Remove the UnrarError variant from the Error enum as it's no longer used. --- src/archive/rar.rs | 20 +++++++------------- src/error.rs | 3 --- 2 files changed, 7 insertions(+), 16 deletions(-) diff --git a/src/archive/rar.rs b/src/archive/rar.rs index 8c7c638..ce43266 100644 --- a/src/archive/rar.rs +++ b/src/archive/rar.rs @@ -54,21 +54,15 @@ pub fn list_archive( None => Archive::new(archive_path), }; - let result = match archive.open_for_listing() { - Ok(iter) => iter - .map(|item| { - let item = item?; - let is_dir = item.is_directory(); - let path = item.filename; + let archive = archive.open_for_listing()?; - Ok(FileInArchive { path, is_dir }) - }) - .collect::>() - .into_iter(), - Err(e) => return Err(Error::UnrarError { reason: e.to_string() }), - }; + Ok(archive.map(|item| { + let item = item?; + let is_dir = item.is_directory(); + let path = item.filename; - Ok(result) + Ok(FileInArchive { path, is_dir }) + })) } pub fn no_compression() -> Error { diff --git a/src/error.rs b/src/error.rs index 03634ab..da495ba 100644 --- a/src/error.rs +++ b/src/error.rs @@ -41,8 +41,6 @@ pub enum Error { UnsupportedFormat { reason: String }, /// Invalid password provided InvalidPassword { reason: String }, - /// UnrarError From unrar::error::UnrarError - UnrarError { reason: String }, } /// Alias to std's Result with ouch's Error @@ -153,7 +151,6 @@ impl fmt::Display for Error { FinalError::with_title("Recognised but unsupported format").detail(reason.clone()) } Error::InvalidPassword { reason } => FinalError::with_title("Invalid password").detail(reason.clone()), - Error::UnrarError { reason } => FinalError::with_title("Unrar error").detail(reason.clone()), }; write!(f, "{err}")