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

tison pushed a commit to branch wasm-time
in repository https://gitbox.apache.org/repos/asf/opendal.git

commit 63fd28c269ff4102e245bb17fda384f8780ab5eb
Author: tison <[email protected]>
AuthorDate: Mon Dec 1 20:14:35 2025 +0800

    refactor: use web-time types on wasm32 target
    
    Signed-off-by: tison <[email protected]>
---
 .github/workflows/ci_core.yml                      | 1 +
 core/Cargo.lock                                    | 1 +
 core/Cargo.toml                                    | 1 +
 core/src/layers/fastmetrics.rs                     | 1 -
 core/src/layers/observe/metrics.rs                 | 2 --
 core/src/layers/otelmetrics.rs                     | 2 --
 core/src/layers/prometheus.rs                      | 2 --
 core/src/layers/prometheus_client.rs               | 1 -
 core/src/layers/retry.rs                           | 1 -
 core/src/layers/tail_cut.rs                        | 6 ++----
 core/src/layers/timeout.rs                         | 2 --
 core/src/raw/futures_util.rs                       | 5 ++---
 core/src/raw/oio/write/block_write.rs              | 1 -
 core/src/raw/oio/write/multipart_write.rs          | 2 --
 core/src/raw/oio/write/position_write.rs           | 1 -
 core/src/raw/ops.rs                                | 2 +-
 core/src/raw/time.rs                               | 6 +++++-
 core/src/services/azblob/core.rs                   | 1 -
 core/src/services/b2/core.rs                       | 1 -
 core/src/services/cloudflare_kv/backend.rs         | 1 -
 core/src/services/cloudflare_kv/config.rs          | 2 +-
 core/src/services/cloudflare_kv/core.rs            | 7 +------
 core/src/services/cos/core.rs                      | 1 -
 core/src/services/dashmap/writer.rs                | 3 +--
 core/src/services/dropbox/core.rs                  | 1 -
 core/src/services/etcd/core.rs                     | 7 ++++---
 core/src/services/ftp/core.rs                      | 4 +---
 core/src/services/gcs/core.rs                      | 1 -
 core/src/services/gdrive/core.rs                   | 1 -
 core/src/services/memcached/backend.rs             | 1 -
 core/src/services/memcached/config.rs              | 2 +-
 core/src/services/memcached/core.rs                | 1 -
 core/src/services/mini_moka/backend.rs             | 1 -
 core/src/services/moka/backend.rs                  | 3 ---
 core/src/services/monoiofs/core.rs                 | 3 +--
 core/src/services/obs/core.rs                      | 1 -
 core/src/services/onedrive/core.rs                 | 1 -
 core/src/services/oss/core.rs                      | 1 -
 core/src/services/redis/backend.rs                 | 1 -
 core/src/services/redis/config.rs                  | 2 +-
 core/src/services/redis/core.rs                    | 5 +++--
 core/src/services/s3/core.rs                       | 1 -
 core/src/services/sftp/core.rs                     | 1 -
 core/src/types/execute/executors/tokio_executor.rs | 3 +--
 core/src/types/operator/operator.rs                | 1 -
 core/src/types/operator/operator_futures.rs        | 1 -
 46 files changed, 28 insertions(+), 68 deletions(-)

diff --git a/.github/workflows/ci_core.yml b/.github/workflows/ci_core.yml
index 4d06c999a..9d13d7867 100644
--- a/.github/workflows/ci_core.yml
+++ b/.github/workflows/ci_core.yml
@@ -235,6 +235,7 @@ jobs:
             services-gdrive
             services-opfs
             services-s3
+            layers-metrics
           )
           rustup target add wasm32-unknown-unknown
           cargo build --target wasm32-unknown-unknown --no-default-features 
--features="${FEATURES[*]}" --locked
diff --git a/core/Cargo.lock b/core/Cargo.lock
index d07ed620c..ec9f24284 100644
--- a/core/Cargo.lock
+++ b/core/Cargo.lock
@@ -5432,6 +5432,7 @@ dependencies = [
  "wasm-bindgen",
  "wasm-bindgen-futures",
  "web-sys",
+ "web-time",
 ]
 
 [[package]]
diff --git a/core/Cargo.toml b/core/Cargo.toml
index a05c7a597..188b63fdf 100644
--- a/core/Cargo.toml
+++ b/core/Cargo.toml
@@ -418,6 +418,7 @@ getrandom = { version = "0.2", features = ["js"] }
 jiff = { version = "0.2.15", features = ["serde", "js"] }
 tokio = { version = "1.48", features = ["time"] }
 uuid = { version = "1.18", features = ["serde", "v4", "js"] }
+web-time = { version = "1.1.0" }
 
 [dev-dependencies]
 criterion = { version = "0.7", features = ["async", "async_tokio"] }
diff --git a/core/src/layers/fastmetrics.rs b/core/src/layers/fastmetrics.rs
index 9b314a97b..5a9d7dfdb 100644
--- a/core/src/layers/fastmetrics.rs
+++ b/core/src/layers/fastmetrics.rs
@@ -16,7 +16,6 @@
 // under the License.
 
 use std::fmt;
-use std::time::Duration;
 
 use fastmetrics::encoder::EncodeLabelSet;
 use fastmetrics::encoder::LabelSetEncoder;
diff --git a/core/src/layers/observe/metrics.rs 
b/core/src/layers/observe/metrics.rs
index ea779ece1..7cf7f051d 100644
--- a/core/src/layers/observe/metrics.rs
+++ b/core/src/layers/observe/metrics.rs
@@ -22,8 +22,6 @@ use std::sync::Arc;
 use std::task::Context;
 use std::task::Poll;
 use std::task::ready;
-use std::time::Duration;
-use std::time::Instant;
 
 use futures::Stream;
 use futures::StreamExt;
diff --git a/core/src/layers/otelmetrics.rs b/core/src/layers/otelmetrics.rs
index c5fac5c0d..0031b8ff1 100644
--- a/core/src/layers/otelmetrics.rs
+++ b/core/src/layers/otelmetrics.rs
@@ -15,8 +15,6 @@
 // specific language governing permissions and limitations
 // under the License.
 
-use std::time::Duration;
-
 use opentelemetry::KeyValue;
 use opentelemetry::metrics::Counter;
 use opentelemetry::metrics::Histogram;
diff --git a/core/src/layers/prometheus.rs b/core/src/layers/prometheus.rs
index 175ed330a..ae86d1410 100644
--- a/core/src/layers/prometheus.rs
+++ b/core/src/layers/prometheus.rs
@@ -15,8 +15,6 @@
 // specific language governing permissions and limitations
 // under the License.
 
-use std::time::Duration;
-
 use prometheus::HistogramVec;
 use prometheus::Registry;
 use prometheus::core::AtomicI64;
diff --git a/core/src/layers/prometheus_client.rs 
b/core/src/layers/prometheus_client.rs
index 846546f39..46eaa6dd4 100644
--- a/core/src/layers/prometheus_client.rs
+++ b/core/src/layers/prometheus_client.rs
@@ -16,7 +16,6 @@
 // under the License.
 
 use std::fmt;
-use std::time::Duration;
 
 use prometheus_client::encoding::EncodeLabel;
 use prometheus_client::encoding::EncodeLabelSet;
diff --git a/core/src/layers/retry.rs b/core/src/layers/retry.rs
index 59a63830f..2b60045f6 100644
--- a/core/src/layers/retry.rs
+++ b/core/src/layers/retry.rs
@@ -18,7 +18,6 @@
 use std::fmt::Debug;
 use std::fmt::Formatter;
 use std::sync::Arc;
-use std::time::Duration;
 
 use backon::BlockingRetryable;
 use backon::ExponentialBuilder;
diff --git a/core/src/layers/tail_cut.rs b/core/src/layers/tail_cut.rs
index 42a071c60..2f70a27a7 100644
--- a/core/src/layers/tail_cut.rs
+++ b/core/src/layers/tail_cut.rs
@@ -19,8 +19,6 @@ use std::fmt::Debug;
 use std::fmt::Formatter;
 use std::sync::Arc;
 use std::sync::atomic::{AtomicU64, AtomicUsize, Ordering};
-use std::time::Duration;
-use std::time::Instant;
 
 use crate::raw::*;
 use crate::*;
@@ -814,8 +812,8 @@ impl WindowedHistogram {
     }
 
     fn now_ms() -> u64 {
-        std::time::SystemTime::now()
-            .duration_since(std::time::UNIX_EPOCH)
+        SystemTime::now()
+            .duration_since(UNIX_EPOCH)
             .unwrap()
             .as_millis() as u64
     }
diff --git a/core/src/layers/timeout.rs b/core/src/layers/timeout.rs
index 5240e8f0c..36101be7c 100644
--- a/core/src/layers/timeout.rs
+++ b/core/src/layers/timeout.rs
@@ -17,7 +17,6 @@
 
 use std::future::Future;
 use std::sync::Arc;
-use std::time::Duration;
 
 use crate::raw::*;
 use crate::*;
@@ -356,7 +355,6 @@ mod tests {
     use std::future::Future;
     use std::future::pending;
     use std::sync::Arc;
-    use std::time::Duration;
 
     use futures::StreamExt;
     use tokio::time::sleep;
diff --git a/core/src/raw/futures_util.rs b/core/src/raw/futures_util.rs
index c34499355..17134f1e6 100644
--- a/core/src/raw/futures_util.rs
+++ b/core/src/raw/futures_util.rs
@@ -115,7 +115,7 @@ pub struct ConcurrentTasks<I, O> {
     executor: Executor,
     /// The factory to create the task.
     ///
-    /// Caller of ConcurrentTasks must provides a factory to create the task 
for executing.
+    /// Caller of ConcurrentTasks must provide a factory to create the task 
for executing.
     ///
     /// The factory must accept an input and return a future that resolves to 
a tuple of input and
     /// output result. If the given result is error, the error will be 
returned to users and the
@@ -318,13 +318,12 @@ impl<I: Send + 'static, O: Send + 'static> 
ConcurrentTasks<I, O> {
 
 #[cfg(test)]
 mod tests {
-    use std::time::Duration;
-
     use pretty_assertions::assert_eq;
     use rand::Rng;
     use tokio::time::sleep;
 
     use super::*;
+    use crate::raw::Duration;
 
     #[tokio::test]
     async fn test_concurrent_tasks() {
diff --git a/core/src/raw/oio/write/block_write.rs 
b/core/src/raw/oio/write/block_write.rs
index 91d0ee80d..793da2be7 100644
--- a/core/src/raw/oio/write/block_write.rs
+++ b/core/src/raw/oio/write/block_write.rs
@@ -245,7 +245,6 @@ where
 mod tests {
     use std::collections::HashMap;
     use std::sync::Mutex;
-    use std::time::Duration;
 
     use pretty_assertions::assert_eq;
     use rand::Rng;
diff --git a/core/src/raw/oio/write/multipart_write.rs 
b/core/src/raw/oio/write/multipart_write.rs
index 403774826..e8b174b18 100644
--- a/core/src/raw/oio/write/multipart_write.rs
+++ b/core/src/raw/oio/write/multipart_write.rs
@@ -307,8 +307,6 @@ where
 
 #[cfg(test)]
 mod tests {
-    use std::time::Duration;
-
     use mea::mutex::Mutex;
     use pretty_assertions::assert_eq;
     use rand::Rng;
diff --git a/core/src/raw/oio/write/position_write.rs 
b/core/src/raw/oio/write/position_write.rs
index 45897ce61..4c4f2a9af 100644
--- a/core/src/raw/oio/write/position_write.rs
+++ b/core/src/raw/oio/write/position_write.rs
@@ -173,7 +173,6 @@ impl<W: PositionWrite> oio::Write for PositionWriter<W> {
 mod tests {
     use std::collections::HashSet;
     use std::sync::Mutex;
-    use std::time::Duration;
 
     use pretty_assertions::assert_eq;
     use rand::Rng;
diff --git a/core/src/raw/ops.rs b/core/src/raw/ops.rs
index abd89be9e..19299f949 100644
--- a/core/src/raw/ops.rs
+++ b/core/src/raw/ops.rs
@@ -21,8 +21,8 @@
 
 use crate::options;
 use crate::raw::*;
+
 use std::collections::HashMap;
-use std::time::Duration;
 
 /// Args for `create` operation.
 ///
diff --git a/core/src/raw/time.rs b/core/src/raw/time.rs
index 9d67931b3..2a6bc2da9 100644
--- a/core/src/raw/time.rs
+++ b/core/src/raw/time.rs
@@ -22,7 +22,11 @@ use jiff::SignedDuration;
 use std::fmt;
 use std::ops::{Add, AddAssign, Sub, SubAssign};
 use std::str::FromStr;
-use std::time::{Duration, SystemTime};
+
+#[cfg(not(target_arch = "wasm32"))]
+pub use std::time::{Duration, Instant, SystemTime, UNIX_EPOCH};
+#[cfg(target_arch = "wasm32")]
+pub use web_time::{Duration, Instant, SystemTime, UNIX_EPOCH};
 
 /// An instant in time represented as the number of nanoseconds since the Unix 
epoch.
 #[derive(Default, Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
diff --git a/core/src/services/azblob/core.rs b/core/src/services/azblob/core.rs
index fe533807b..b2d615ff3 100644
--- a/core/src/services/azblob/core.rs
+++ b/core/src/services/azblob/core.rs
@@ -17,7 +17,6 @@
 
 use std::fmt::Debug;
 use std::sync::Arc;
-use std::time::Duration;
 
 use base64::Engine;
 use base64::prelude::BASE64_STANDARD;
diff --git a/core/src/services/b2/core.rs b/core/src/services/b2/core.rs
index b88a20598..a266d77be 100644
--- a/core/src/services/b2/core.rs
+++ b/core/src/services/b2/core.rs
@@ -17,7 +17,6 @@
 
 use std::fmt::Debug;
 use std::sync::Arc;
-use std::time::Duration;
 
 use bytes::Buf;
 use http::Request;
diff --git a/core/src/services/cloudflare_kv/backend.rs 
b/core/src/services/cloudflare_kv/backend.rs
index a02515654..d0feca9be 100644
--- a/core/src/services/cloudflare_kv/backend.rs
+++ b/core/src/services/cloudflare_kv/backend.rs
@@ -17,7 +17,6 @@
 
 use std::fmt::Debug;
 use std::sync::Arc;
-use std::time::Duration;
 
 use bytes::Buf;
 use http::StatusCode;
diff --git a/core/src/services/cloudflare_kv/config.rs 
b/core/src/services/cloudflare_kv/config.rs
index 34698f63f..27956d10a 100644
--- a/core/src/services/cloudflare_kv/config.rs
+++ b/core/src/services/cloudflare_kv/config.rs
@@ -16,13 +16,13 @@
 // under the License.
 
 use std::fmt::Debug;
-use std::time::Duration;
 
 use serde::Deserialize;
 use serde::Serialize;
 
 use super::CLOUDFLARE_KV_SCHEME;
 use super::backend::CloudflareKvBuilder;
+use crate::raw::*;
 
 /// Cloudflare KV Service Support.
 #[derive(Default, Serialize, Deserialize, Clone, PartialEq, Eq)]
diff --git a/core/src/services/cloudflare_kv/core.rs 
b/core/src/services/cloudflare_kv/core.rs
index 13797b587..fa1069b17 100644
--- a/core/src/services/cloudflare_kv/core.rs
+++ b/core/src/services/cloudflare_kv/core.rs
@@ -16,7 +16,6 @@
 // under the License.
 
 use std::sync::Arc;
-use std::time::Duration;
 
 use http::Request;
 use http::Response;
@@ -24,11 +23,7 @@ use http::header;
 use http::request;
 use serde_json::json;
 
-use crate::raw::Operation;
-use crate::raw::QueryPairsWriter;
-use crate::raw::new_json_serialize_error;
-use crate::raw::percent_encode_path;
-use crate::raw::{AccessorInfo, FormDataPart, Multipart, 
new_request_build_error};
+use crate::raw::*;
 use crate::services::cloudflare_kv::model::CfKvMetadata;
 use crate::{Buffer, Result};
 
diff --git a/core/src/services/cos/core.rs b/core/src/services/cos/core.rs
index cb3c75b38..f601dc6ba 100644
--- a/core/src/services/cos/core.rs
+++ b/core/src/services/cos/core.rs
@@ -17,7 +17,6 @@
 
 use std::fmt::Debug;
 use std::sync::Arc;
-use std::time::Duration;
 
 use bytes::Bytes;
 use http::Request;
diff --git a/core/src/services/dashmap/writer.rs 
b/core/src/services/dashmap/writer.rs
index 54efe86cb..15a6ebfff 100644
--- a/core/src/services/dashmap/writer.rs
+++ b/core/src/services/dashmap/writer.rs
@@ -16,11 +16,10 @@
 // under the License.
 
 use std::sync::Arc;
-use std::time::SystemTime;
 
 use super::core::DashmapCore;
 use super::core::DashmapValue;
-use crate::raw::{OpWrite, Timestamp, oio};
+use crate::raw::*;
 use crate::*;
 
 pub struct DashmapWriter {
diff --git a/core/src/services/dropbox/core.rs 
b/core/src/services/dropbox/core.rs
index 396c73fe2..13545dde0 100644
--- a/core/src/services/dropbox/core.rs
+++ b/core/src/services/dropbox/core.rs
@@ -17,7 +17,6 @@
 
 use std::fmt::Debug;
 use std::sync::Arc;
-use std::time::Duration;
 
 use bytes::Buf;
 use bytes::Bytes;
diff --git a/core/src/services/etcd/core.rs b/core/src/services/etcd/core.rs
index 24b6eea6e..2d458f27b 100644
--- a/core/src/services/etcd/core.rs
+++ b/core/src/services/etcd/core.rs
@@ -15,8 +15,6 @@
 // specific language governing permissions and limitations
 // under the License.
 
-use crate::services::etcd::error::format_etcd_error;
-use crate::{Buffer, Error, ErrorKind, Result};
 use etcd_client::Client;
 use etcd_client::ConnectOptions;
 use fastpool::ManageObject;
@@ -24,7 +22,10 @@ use fastpool::ObjectStatus;
 use fastpool::bounded;
 use std::fmt::Debug;
 use std::sync::Arc;
-use std::time::Duration;
+
+use crate::raw::*;
+use crate::services::etcd::error::format_etcd_error;
+use crate::{Buffer, Error, ErrorKind, Result};
 
 pub mod constants {
     pub const DEFAULT_ETCD_ENDPOINTS: &str = "http://127.0.0.1:2379";;
diff --git a/core/src/services/ftp/core.rs b/core/src/services/ftp/core.rs
index afe227add..5ff027701 100644
--- a/core/src/services/ftp/core.rs
+++ b/core/src/services/ftp/core.rs
@@ -17,9 +17,7 @@
 
 use fastpool::{ManageObject, ObjectStatus, bounded};
 use futures_rustls::TlsConnector;
-use raw::Operation;
 use std::sync::Arc;
-use std::time::Duration;
 use suppaftp::AsyncRustlsConnector;
 use suppaftp::AsyncRustlsFtpStream;
 use suppaftp::FtpError;
@@ -29,7 +27,7 @@ use suppaftp::rustls::ClientConfig;
 use suppaftp::types::FileType;
 
 use super::err::format_ftp_error;
-use crate::raw::AccessorInfo;
+use crate::raw::*;
 use crate::*;
 
 pub struct FtpCore {
diff --git a/core/src/services/gcs/core.rs b/core/src/services/gcs/core.rs
index f9e88406c..35838a410 100644
--- a/core/src/services/gcs/core.rs
+++ b/core/src/services/gcs/core.rs
@@ -20,7 +20,6 @@ use std::fmt::Debug;
 use std::fmt::Write;
 use std::sync::Arc;
 use std::sync::LazyLock;
-use std::time::Duration;
 
 use backon::ExponentialBuilder;
 use backon::Retryable;
diff --git a/core/src/services/gdrive/core.rs b/core/src/services/gdrive/core.rs
index 0b89c14b3..b854969fc 100644
--- a/core/src/services/gdrive/core.rs
+++ b/core/src/services/gdrive/core.rs
@@ -17,7 +17,6 @@
 
 use std::fmt::Debug;
 use std::sync::Arc;
-use std::time::Duration;
 
 use bytes::Buf;
 use bytes::Bytes;
diff --git a/core/src/services/memcached/backend.rs 
b/core/src/services/memcached/backend.rs
index cbf6aa5c4..9544b0c7d 100644
--- a/core/src/services/memcached/backend.rs
+++ b/core/src/services/memcached/backend.rs
@@ -16,7 +16,6 @@
 // under the License.
 
 use std::sync::Arc;
-use std::time::Duration;
 
 use super::MEMCACHED_SCHEME;
 use super::config::MemcachedConfig;
diff --git a/core/src/services/memcached/config.rs 
b/core/src/services/memcached/config.rs
index ac8990a1d..943f38ce8 100644
--- a/core/src/services/memcached/config.rs
+++ b/core/src/services/memcached/config.rs
@@ -16,13 +16,13 @@
 // under the License.
 
 use std::fmt::Debug;
-use std::time::Duration;
 
 use serde::Deserialize;
 use serde::Serialize;
 
 use super::MEMCACHED_SCHEME;
 use super::backend::MemcachedBuilder;
+use crate::raw::*;
 
 /// Config for MemCached services support
 #[derive(Default, Serialize, Deserialize, Clone, PartialEq, Eq)]
diff --git a/core/src/services/memcached/core.rs 
b/core/src/services/memcached/core.rs
index c88d7b0be..25b097314 100644
--- a/core/src/services/memcached/core.rs
+++ b/core/src/services/memcached/core.rs
@@ -17,7 +17,6 @@
 
 use fastpool::{ManageObject, ObjectStatus, bounded};
 use std::sync::Arc;
-use std::time::Duration;
 use tokio::net::TcpStream;
 
 use super::binary;
diff --git a/core/src/services/mini_moka/backend.rs 
b/core/src/services/mini_moka/backend.rs
index 24a6b08ed..55da226cb 100644
--- a/core/src/services/mini_moka/backend.rs
+++ b/core/src/services/mini_moka/backend.rs
@@ -16,7 +16,6 @@
 // under the License.
 
 use std::sync::Arc;
-use std::time::Duration;
 
 use log::debug;
 
diff --git a/core/src/services/moka/backend.rs 
b/core/src/services/moka/backend.rs
index ee28e15b9..dc16c82a4 100644
--- a/core/src/services/moka/backend.rs
+++ b/core/src/services/moka/backend.rs
@@ -17,7 +17,6 @@
 
 use std::fmt::Debug;
 use std::sync::Arc;
-use std::time::Duration;
 
 use log::debug;
 
@@ -27,8 +26,6 @@ use super::core::*;
 use super::deleter::MokaDeleter;
 use super::lister::MokaLister;
 use super::writer::MokaWriter;
-use crate::raw::oio;
-use crate::raw::signed_to_duration;
 use crate::raw::*;
 use crate::*;
 
diff --git a/core/src/services/monoiofs/core.rs 
b/core/src/services/monoiofs/core.rs
index eee84568c..009fbf2da 100644
--- a/core/src/services/monoiofs/core.rs
+++ b/core/src/services/monoiofs/core.rs
@@ -19,7 +19,6 @@ use std::mem;
 use std::path::PathBuf;
 use std::sync::Arc;
 use std::sync::Mutex;
-use std::time::Duration;
 
 use flume::Receiver;
 use flume::Sender;
@@ -31,6 +30,7 @@ use monoio::RuntimeBuilder;
 use super::MONOIOFS_SCHEME;
 use crate::raw::*;
 use crate::*;
+
 pub const BUFFER_SIZE: usize = 2 * 1024 * 1024; // 2 MiB
 
 /// a boxed function that spawns task in current monoio runtime
@@ -219,7 +219,6 @@ impl MonoiofsCore {
 #[cfg(test)]
 mod tests {
     use std::sync::Arc;
-    use std::time::Duration;
 
     use futures::StreamExt;
     use futures::channel::mpsc::UnboundedSender;
diff --git a/core/src/services/obs/core.rs b/core/src/services/obs/core.rs
index 33f03f549..9ed33e905 100644
--- a/core/src/services/obs/core.rs
+++ b/core/src/services/obs/core.rs
@@ -17,7 +17,6 @@
 
 use std::fmt::Debug;
 use std::sync::Arc;
-use std::time::Duration;
 
 use bytes::Bytes;
 use http::Request;
diff --git a/core/src/services/onedrive/core.rs 
b/core/src/services/onedrive/core.rs
index 1867fbb65..76b334d81 100644
--- a/core/src/services/onedrive/core.rs
+++ b/core/src/services/onedrive/core.rs
@@ -17,7 +17,6 @@
 
 use std::fmt::Debug;
 use std::sync::Arc;
-use std::time::Duration;
 
 use bytes::Buf;
 use bytes::Bytes;
diff --git a/core/src/services/oss/core.rs b/core/src/services/oss/core.rs
index 78423dd76..7bdf5456d 100644
--- a/core/src/services/oss/core.rs
+++ b/core/src/services/oss/core.rs
@@ -17,7 +17,6 @@
 
 use std::fmt::Debug;
 use std::sync::Arc;
-use std::time::Duration;
 
 use bytes::Bytes;
 use constants::X_OSS_META_PREFIX;
diff --git a/core/src/services/redis/backend.rs 
b/core/src/services/redis/backend.rs
index e9b3d58a1..1b219f44f 100644
--- a/core/src/services/redis/backend.rs
+++ b/core/src/services/redis/backend.rs
@@ -17,7 +17,6 @@
 
 use std::path::PathBuf;
 use std::sync::Arc;
-use std::time::Duration;
 
 use http::Uri;
 use redis::Client;
diff --git a/core/src/services/redis/config.rs 
b/core/src/services/redis/config.rs
index 1f07f4a04..7df08e87c 100644
--- a/core/src/services/redis/config.rs
+++ b/core/src/services/redis/config.rs
@@ -16,13 +16,13 @@
 // under the License.
 
 use std::fmt::Debug;
-use std::time::Duration;
 
 use serde::Deserialize;
 use serde::Serialize;
 
 use super::REDIS_SCHEME;
 use super::backend::RedisBuilder;
+use crate::raw::*;
 
 /// Config for Redis services support.
 #[derive(Default, Serialize, Deserialize, Clone, PartialEq, Eq)]
diff --git a/core/src/services/redis/core.rs b/core/src/services/redis/core.rs
index f0f5de20a..08fedc5d3 100644
--- a/core/src/services/redis/core.rs
+++ b/core/src/services/redis/core.rs
@@ -17,9 +17,7 @@
 
 use std::fmt::Debug;
 use std::sync::Arc;
-use std::time::Duration;
 
-use crate::*;
 use bytes::Bytes;
 use fastpool::{ManageObject, ObjectStatus, bounded};
 use redis::AsyncCommands;
@@ -34,6 +32,9 @@ use redis::aio::ConnectionManager;
 use redis::cluster::ClusterClient;
 use redis::cluster_async::ClusterConnection;
 
+use crate::raw::*;
+use crate::*;
+
 #[derive(Clone)]
 pub enum RedisConnection {
     Normal(ConnectionManager),
diff --git a/core/src/services/s3/core.rs b/core/src/services/s3/core.rs
index 28576e4cd..6699dd2bf 100644
--- a/core/src/services/s3/core.rs
+++ b/core/src/services/s3/core.rs
@@ -19,7 +19,6 @@ use std::fmt::Debug;
 use std::fmt::Display;
 use std::fmt::Write;
 use std::sync::Arc;
-use std::time::Duration;
 
 use base64::Engine;
 use base64::prelude::BASE64_STANDARD;
diff --git a/core/src/services/sftp/core.rs b/core/src/services/sftp/core.rs
index 2520a03d9..83ff99258 100644
--- a/core/src/services/sftp/core.rs
+++ b/core/src/services/sftp/core.rs
@@ -30,7 +30,6 @@ use std::fmt::Debug;
 use std::path::Path;
 use std::path::PathBuf;
 use std::sync::Arc;
-use std::time::Duration;
 
 pub struct SftpCore {
     pub info: Arc<AccessorInfo>,
diff --git a/core/src/types/execute/executors/tokio_executor.rs 
b/core/src/types/execute/executors/tokio_executor.rs
index 72f96b01b..afb02931c 100644
--- a/core/src/types/execute/executors/tokio_executor.rs
+++ b/core/src/types/execute/executors/tokio_executor.rs
@@ -15,7 +15,7 @@
 // specific language governing permissions and limitations
 // under the License.
 
-use crate::raw::BoxedStaticFuture;
+use crate::raw::*;
 use crate::*;
 
 /// Executor that uses the [`tokio::task::spawn`] to execute futures.
@@ -34,7 +34,6 @@ mod tests {
     use std::sync::Arc;
     use std::sync::atomic::AtomicBool;
     use std::sync::atomic::Ordering;
-    use std::time::Duration;
 
     use tokio::time::sleep;
 
diff --git a/core/src/types/operator/operator.rs 
b/core/src/types/operator/operator.rs
index 5f255ab52..d65136730 100644
--- a/core/src/types/operator/operator.rs
+++ b/core/src/types/operator/operator.rs
@@ -16,7 +16,6 @@
 // under the License.
 
 use std::future::Future;
-use std::time::Duration;
 
 use futures::Stream;
 use futures::StreamExt;
diff --git a/core/src/types/operator/operator_futures.rs 
b/core/src/types/operator/operator_futures.rs
index 1a1276bb1..69c15b279 100644
--- a/core/src/types/operator/operator_futures.rs
+++ b/core/src/types/operator/operator_futures.rs
@@ -22,7 +22,6 @@
 use std::collections::HashMap;
 use std::future::IntoFuture;
 use std::ops::RangeBounds;
-use std::time::Duration;
 
 use crate::raw::*;
 use crate::*;

Reply via email to