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));