This is an automated email from the ASF dual-hosted git repository.

xuanwo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/opendal.git


The following commit(s) were added to refs/heads/main by this push:
     new 66bf9db1a refactor: refactor some unnecessary clone and use next_back 
to make clippy happy (#5554)
66bf9db1a is described below

commit 66bf9db1a41b58afc03d877509e45b555067cfd6
Author: yihong <[email protected]>
AuthorDate: Fri Jan 17 09:58:17 2025 +0800

    refactor: refactor some unnecessary clone and use next_back to make clippy 
happy (#5554)
---
 core/benches/vs_s3/src/main.rs    | 6 +++---
 core/src/raw/http_util/header.rs  | 2 +-
 core/src/raw/path.rs              | 2 +-
 core/src/services/azblob/error.rs | 7 ++++---
 core/src/services/s3/error.rs     | 6 ++++--
 5 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/core/benches/vs_s3/src/main.rs b/core/benches/vs_s3/src/main.rs
index 91b1be904..324b2bbad 100644
--- a/core/benches/vs_s3/src/main.rs
+++ b/core/benches/vs_s3/src/main.rs
@@ -69,7 +69,7 @@ fn bench_read(c: &mut Criterion, op: Operator, s3_client: 
aws_sdk_s3::Client, bu
     let mut group = c.benchmark_group("read");
     group.throughput(criterion::Throughput::Bytes(16 * 1024 * 1024));
 
-    TEST_RUNTIME.block_on(prepare(op.clone()));
+    TEST_RUNTIME.block_on(prepare(&op));
 
     group.bench_function("opendal_s3_reader", |b| {
         b.to_async(&*TEST_RUNTIME).iter(|| async {
@@ -118,10 +118,10 @@ fn bench_read(c: &mut Criterion, op: Operator, s3_client: 
aws_sdk_s3::Client, bu
     group.finish()
 }
 
-async fn prepare(op: Operator) {
+async fn prepare(op: &Operator) {
     let mut rng = thread_rng();
     let mut content = vec![0; 16 * 1024 * 1024];
     rng.fill_bytes(&mut content);
 
-    op.write("file", content.clone()).await.unwrap();
+    op.write("file", content).await.unwrap();
 }
diff --git a/core/src/raw/http_util/header.rs b/core/src/raw/http_util/header.rs
index 2da77a4b0..2db92e9ef 100644
--- a/core/src/raw/http_util/header.rs
+++ b/core/src/raw/http_util/header.rs
@@ -129,7 +129,7 @@ where
         .with_operation("http_util::parse_header_to_str")
     })?;
 
-    let value = if let Some(v) = headers.get(name.clone()) {
+    let value = if let Some(v) = headers.get(&name) {
         v
     } else {
         return Ok(None);
diff --git a/core/src/raw/path.rs b/core/src/raw/path.rs
index fb3c4ad07..79b449514 100644
--- a/core/src/raw/path.rs
+++ b/core/src/raw/path.rs
@@ -157,7 +157,7 @@ pub fn get_basename(path: &str) -> &str {
     if !path.ends_with('/') {
         return path
             .split('/')
-            .last()
+            .next_back()
             .expect("file path without name is invalid");
     }
 
diff --git a/core/src/services/azblob/error.rs 
b/core/src/services/azblob/error.rs
index 1ea38ad87..c67d805c0 100644
--- a/core/src/services/azblob/error.rs
+++ b/core/src/services/azblob/error.rs
@@ -60,8 +60,8 @@ impl Debug for AzblobError {
 
 /// Parse error response into Error.
 pub(super) fn parse_error(resp: Response<Buffer>) -> Error {
-    let (parts, mut body) = resp.into_parts();
-    let bs = body.copy_to_bytes(body.remaining());
+    let (parts, body) = resp.into_parts();
+    let bs = body.to_bytes();
 
     let (kind, retryable) = match parts.status {
         StatusCode::NOT_FOUND => (ErrorKind::NotFound, false),
@@ -76,7 +76,8 @@ pub(super) fn parse_error(resp: Response<Buffer>) -> Error {
         _ => (ErrorKind::Unexpected, false),
     };
 
-    let mut message = match de::from_reader::<_, 
AzblobError>(bs.clone().reader()) {
+    let bs_content = bs.chunk();
+    let mut message = match de::from_reader::<_, 
AzblobError>(bs_content.reader()) {
         Ok(azblob_err) => format!("{azblob_err:?}"),
         Err(_) => String::from_utf8_lossy(&bs).into_owned(),
     };
diff --git a/core/src/services/s3/error.rs b/core/src/services/s3/error.rs
index 503ca4ecb..385b75fac 100644
--- a/core/src/services/s3/error.rs
+++ b/core/src/services/s3/error.rs
@@ -37,6 +37,7 @@ pub(crate) struct S3Error {
 /// Parse error response into Error.
 pub(super) fn parse_error(resp: Response<Buffer>) -> Error {
     let (parts, body) = resp.into_parts();
+    let bs = body.to_bytes();
 
     let (mut kind, mut retryable) = match parts.status.as_u16() {
         403 => (ErrorKind::PermissionDenied, false),
@@ -49,9 +50,10 @@ pub(super) fn parse_error(resp: Response<Buffer>) -> Error {
         _ => (ErrorKind::Unexpected, false),
     };
 
-    let (message, s3_err) = de::from_reader::<_, 
S3Error>(body.clone().reader())
+    let body_content = bs.chunk();
+    let (message, s3_err) = de::from_reader::<_, 
S3Error>(body_content.reader())
         .map(|s3_err| (format!("{s3_err:?}"), Some(s3_err)))
-        .unwrap_or_else(|_| 
(String::from_utf8_lossy(body.chunk()).into_owned(), None));
+        .unwrap_or_else(|_| (String::from_utf8_lossy(&bs).into_owned(), None));
 
     if let Some(s3_err) = s3_err {
         (kind, retryable) = 
parse_s3_error_code(s3_err.code.as_str()).unwrap_or((kind, retryable));

Reply via email to