You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@opendal.apache.org by gi...@apache.org on 2023/05/26 01:41:13 UTC

[incubator-opendal] branch gh-pages updated: deploy: c5b93ab27bb842c6ffff24ccadd067c64dc2587c

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

github-bot pushed a commit to branch gh-pages
in repository https://gitbox.apache.org/repos/asf/incubator-opendal.git


The following commit(s) were added to refs/heads/gh-pages by this push:
     new ab974c2d deploy: c5b93ab27bb842c6ffff24ccadd067c64dc2587c
ab974c2d is described below

commit ab974c2dc5b1433a6fad2f06752a0c1d893ccc93
Author: Xuanwo <Xu...@users.noreply.github.com>
AuthorDate: Fri May 26 01:41:09 2023 +0000

    deploy: c5b93ab27bb842c6ffff24ccadd067c64dc2587c
---
 404.html                                           |   4 +-
 assets/js/1db64337.c6d87b9a.js                     |   1 -
 assets/js/1db64337.e8791977.js                     |   1 +
 .../{57a16c1d.17efc102.js => 57a16c1d.106bb508.js} |   2 +-
 .../{62a401e9.e382b33a.js => 62a401e9.35bef5c4.js} |   2 +-
 assets/js/ae4554eb.1c1ad5ae.js                     |   1 -
 assets/js/ae4554eb.e07f348a.js                     |   1 +
 ...e~main.89a5daef.js => runtime~main.d4937ab8.js} |   2 +-
 blog/archive/index.html                            |   4 +-
 blog/index.html                                    |   4 +-
 blog/opendal-entered-apache-incubator/index.html   |   4 +-
 blog/tags/announcement/index.html                  |   4 +-
 blog/tags/index.html                               |   4 +-
 docs/category/services/index.html                  |   4 +-
 docs/nodejs/classes/BlockingLister.html            |   4 +-
 docs/nodejs/classes/Entry.html                     |   4 +-
 docs/nodejs/classes/Lister.html                    |   4 +-
 docs/nodejs/classes/Metadata.html                  |  18 +-
 docs/nodejs/classes/Operator.html                  |  58 +++----
 docs/nodejs/interfaces/PresignedRequest.html       |   8 +-
 docs/overview/index.html                           |   6 +-
 docs/python/opendal.html                           |  50 +++---
 docs/python/search.js                              |   2 +-
 docs/rust/implementors/core/clone/trait.Clone.js   |   2 +-
 docs/rust/implementors/core/convert/trait.From.js  |   2 +-
 .../implementors/core/default/trait.Default.js     |   2 +-
 docs/rust/implementors/core/fmt/trait.Debug.js     |   2 +-
 docs/rust/implementors/core/marker/trait.Freeze.js |   2 +-
 docs/rust/implementors/core/marker/trait.Send.js   |   2 +-
 docs/rust/implementors/core/marker/trait.Sync.js   |   2 +-
 docs/rust/implementors/core/marker/trait.Unpin.js  |   2 +-
 .../core/panic/unwind_safe/trait.RefUnwindSafe.js  |   2 +-
 .../core/panic/unwind_safe/trait.UnwindSafe.js     |   2 +-
 docs/rust/opendal/all.html                         |   2 +-
 docs/rust/opendal/index.html                       |   5 +-
 docs/rust/opendal/layers/struct.ChaosLayer.html    |   6 +-
 .../layers/struct.ConcurrentLimitLayer.html        |   6 +-
 .../opendal/layers/struct.ImmutableIndexLayer.html |   8 +-
 docs/rust/opendal/layers/struct.LoggingLayer.html  |   8 +-
 docs/rust/opendal/layers/struct.MadsimLayer.html   |   6 +-
 docs/rust/opendal/layers/struct.MadsimServer.html  |   6 +-
 docs/rust/opendal/layers/struct.MetricsLayer.html  |   4 +-
 .../rust/opendal/layers/struct.MinitraceLayer.html |   4 +-
 .../rust/opendal/layers/struct.OtelTraceLayer.html |   4 +-
 .../opendal/layers/struct.PrometheusLayer.html     |   6 +-
 docs/rust/opendal/layers/struct.RetryLayer.html    |  16 +-
 docs/rust/opendal/layers/struct.TracingLayer.html  |   4 +-
 docs/rust/opendal/operator_functions/index.html    |   2 +-
 .../operator_functions/struct.FunctionWrite.html   |   8 +-
 docs/rust/opendal/operator_futures/index.html      |   2 +-
 .../operator_futures/struct.FutureAppend.html      |  10 +-
 .../operator_futures/struct.FutureAppender.html    |  10 +-
 .../operator_futures/struct.FutureList.html        |  10 +-
 .../operator_futures/struct.FuturePresignRead.html |  14 +-
 .../struct.FuturePresignWrite.html                 |  12 +-
 .../operator_futures/struct.FutureRead.html        |  14 +-
 .../operator_futures/struct.FutureReader.html      |  14 +-
 .../operator_futures/struct.FutureStat.html        |   8 +-
 .../operator_futures/struct.FutureWrite.html       |  12 +-
 .../operator_futures/struct.FutureWriter.html      |  12 +-
 docs/rust/opendal/ops/index.html                   |   3 -
 docs/rust/opendal/ops/sidebar-items.js             |   1 -
 .../opendal/raw/adapters/kv/struct.Backend.html    |  68 ++++----
 .../raw/adapters/typed_kv/struct.Backend.html      |  68 ++++----
 .../opendal/{ops => raw}/enum.BatchOperation.html  |  10 +-
 .../{ops => raw}/enum.PresignOperation.html        |  16 +-
 docs/rust/opendal/raw/index.html                   |   4 +-
 docs/rust/opendal/raw/oio/fn.to_flat_pager.html    |   2 +-
 .../opendal/raw/oio/into_reader/fn.by_range.html   |   2 +-
 .../raw/oio/into_reader/struct.RangeReader.html    |   6 +-
 docs/rust/opendal/raw/oio/struct.ToFlatPager.html  |   8 +-
 docs/rust/opendal/raw/oio/trait.BlockingPage.html  |   2 +-
 docs/rust/opendal/raw/oio/trait.BlockingRead.html  |   2 +-
 docs/rust/opendal/raw/oio/trait.Page.html          |   2 +-
 docs/rust/opendal/raw/oio/trait.Read.html          |   2 +-
 docs/rust/opendal/raw/ops/enum.BatchOperation.html |  11 ++
 .../opendal/raw/ops/enum.PresignOperation.html     |  11 ++
 docs/rust/opendal/raw/ops/struct.OpAppend.html     |  11 ++
 docs/rust/opendal/raw/ops/struct.OpBatch.html      |  11 ++
 docs/rust/opendal/raw/ops/struct.OpCopy.html       |  11 ++
 docs/rust/opendal/raw/ops/struct.OpCreateDir.html  |  11 ++
 docs/rust/opendal/raw/ops/struct.OpDelete.html     |  11 ++
 docs/rust/opendal/raw/ops/struct.OpList.html       |  11 ++
 docs/rust/opendal/raw/ops/struct.OpPresign.html    |  11 ++
 docs/rust/opendal/raw/ops/struct.OpRead.html       |  11 ++
 docs/rust/opendal/raw/ops/struct.OpRename.html     |  11 ++
 docs/rust/opendal/raw/ops/struct.OpStat.html       |  11 ++
 docs/rust/opendal/raw/ops/struct.OpWrite.html      |  11 ++
 docs/rust/opendal/raw/sidebar-items.js             |   2 +-
 docs/rust/opendal/raw/struct.AccessorInfo.html     |  22 +--
 .../rust/opendal/{ops => raw}/struct.OpAppend.html |  18 +-
 docs/rust/opendal/{ops => raw}/struct.OpBatch.html |  10 +-
 docs/rust/opendal/{ops => raw}/struct.OpCopy.html  |   6 +-
 .../opendal/{ops => raw}/struct.OpCreateDir.html   |   6 +-
 .../rust/opendal/{ops => raw}/struct.OpDelete.html |   6 +-
 docs/rust/opendal/{ops => raw}/struct.OpList.html  |  18 +-
 .../opendal/{ops => raw}/struct.OpPresign.html     |  10 +-
 docs/rust/opendal/{ops => raw}/struct.OpRead.html  |  26 +--
 .../rust/opendal/{ops => raw}/struct.OpRename.html |   6 +-
 docs/rust/opendal/{ops => raw}/struct.OpStat.html  |  14 +-
 docs/rust/opendal/{ops => raw}/struct.OpWrite.html |  22 +--
 docs/rust/opendal/raw/trait.Accessor.html          | 190 ++++++++++-----------
 docs/rust/opendal/raw/trait.Layer.html             |   9 +-
 docs/rust/opendal/raw/trait.LayeredAccessor.html   | 102 +++++------
 docs/rust/opendal/raw/type.FusedAccessor.html      |   2 +-
 docs/rust/opendal/services/struct.Azblob.html      |  20 +--
 docs/rust/opendal/services/struct.Azdfs.html       |  16 +-
 docs/rust/opendal/services/struct.Cos.html         |  18 +-
 docs/rust/opendal/services/struct.Fs.html          |  10 +-
 docs/rust/opendal/services/struct.Ftp.html         |  12 +-
 docs/rust/opendal/services/struct.Gcs.html         |  28 +--
 docs/rust/opendal/services/struct.Ghac.html        |  12 +-
 docs/rust/opendal/services/struct.Hdfs.html        |   8 +-
 docs/rust/opendal/services/struct.Http.html        |  16 +-
 docs/rust/opendal/services/struct.Ipfs.html        |  10 +-
 docs/rust/opendal/services/struct.Obs.html         |  16 +-
 docs/rust/opendal/services/struct.Oss.html         |  24 +--
 docs/rust/opendal/services/struct.S3.html          |  56 +++---
 docs/rust/opendal/services/struct.Sftp.html        |  16 +-
 docs/rust/opendal/services/struct.Supabase.html    |  14 +-
 docs/rust/opendal/services/struct.Wasabi.html      |  52 +++---
 docs/rust/opendal/services/struct.Webdav.html      |  16 +-
 docs/rust/opendal/services/struct.Webhdfs.html     |  12 +-
 docs/rust/opendal/sidebar-items.js                 |   2 +-
 docs/rust/opendal/struct.Appender.html             |  20 +--
 docs/rust/opendal/struct.BlockingOperator.html     |  47 ++---
 docs/rust/opendal/struct.BlockingReader.html       |   8 +-
 docs/rust/opendal/struct.BlockingWriter.html       |   8 +-
 docs/rust/opendal/struct.Error.html                |   2 +-
 docs/rust/opendal/struct.Operator.html             | 111 ++++++------
 docs/rust/opendal/struct.Reader.html               |  12 +-
 docs/rust/opendal/struct.Writer.html               |  22 +--
 docs/rust/opendal/trait.Builder.html               |   2 +-
 .../opendal/types/ops/enum.BatchOperation.html     |  11 --
 .../opendal/types/ops/enum.PresignOperation.html   |  11 --
 docs/rust/opendal/types/ops/index.html             |  11 --
 docs/rust/opendal/types/ops/struct.OpAppend.html   |  11 --
 docs/rust/opendal/types/ops/struct.OpBatch.html    |  11 --
 docs/rust/opendal/types/ops/struct.OpCopy.html     |  11 --
 .../rust/opendal/types/ops/struct.OpCreateDir.html |  11 --
 docs/rust/opendal/types/ops/struct.OpDelete.html   |  11 --
 docs/rust/opendal/types/ops/struct.OpList.html     |  11 --
 docs/rust/opendal/types/ops/struct.OpPresign.html  |  11 --
 docs/rust/opendal/types/ops/struct.OpRead.html     |  11 --
 docs/rust/opendal/types/ops/struct.OpRename.html   |  11 --
 docs/rust/opendal/types/ops/struct.OpStat.html     |  11 --
 docs/rust/opendal/types/ops/struct.OpWrite.html    |  11 --
 docs/rust/search-index.js                          |   2 +-
 docs/rust/source-files.js                          |   2 +-
 docs/rust/src/opendal/layers/chaos.rs.html         |   2 -
 docs/rust/src/opendal/layers/complete.rs.html      |   2 -
 .../src/opendal/layers/concurrent_limit.rs.html    |   2 -
 docs/rust/src/opendal/layers/error_context.rs.html |   2 -
 .../src/opendal/layers/immutable_index.rs.html     |   2 -
 docs/rust/src/opendal/layers/logging.rs.html       |   2 -
 docs/rust/src/opendal/layers/madsim.rs.html        |   2 -
 docs/rust/src/opendal/layers/metrics.rs.html       |   2 -
 docs/rust/src/opendal/layers/minitrace.rs.html     |   2 -
 docs/rust/src/opendal/layers/oteltrace.rs.html     |   2 -
 docs/rust/src/opendal/layers/prometheus.rs.html    |   2 -
 docs/rust/src/opendal/layers/retry.rs.html         |   2 -
 docs/rust/src/opendal/layers/tracing.rs.html       |   2 -
 docs/rust/src/opendal/layers/type_eraser.rs.html   |   2 -
 docs/rust/src/opendal/raw/accessor.rs.html         |   2 -
 .../src/opendal/raw/adapters/kv/backend.rs.html    |   2 -
 .../opendal/raw/adapters/typed_kv/backend.rs.html  |   2 -
 docs/rust/src/opendal/raw/layer.rs.html            |   4 -
 docs/rust/src/opendal/raw/mod.rs.html              |   6 +
 .../opendal/raw/oio/into_reader/by_range.rs.html   |   2 -
 .../rust/src/opendal/raw/oio/to_flat_pager.rs.html |   2 -
 docs/rust/src/opendal/{types => raw}/ops.rs.html   |   2 +-
 .../src/opendal/services/azblob/appender.rs.html   |   2 -
 .../src/opendal/services/azblob/backend.rs.html    |   4 -
 .../src/opendal/services/azblob/writer.rs.html     |   2 -
 .../src/opendal/services/azdfs/backend.rs.html     |   2 -
 .../rust/src/opendal/services/azdfs/writer.rs.html |   2 -
 docs/rust/src/opendal/services/cos/backend.rs.html |   2 -
 docs/rust/src/opendal/services/cos/writer.rs.html  |   2 -
 docs/rust/src/opendal/services/fs/appender.rs.html |   2 -
 docs/rust/src/opendal/services/fs/backend.rs.html  |   2 -
 docs/rust/src/opendal/services/ftp/backend.rs.html |   2 -
 docs/rust/src/opendal/services/gcs/backend.rs.html |   2 -
 docs/rust/src/opendal/services/gcs/writer.rs.html  |   2 -
 .../src/opendal/services/gdrive/backend.rs.html    |  22 +--
 .../src/opendal/services/gdrive/writer.rs.html     |   2 -
 .../rust/src/opendal/services/ghac/backend.rs.html |   2 -
 .../rust/src/opendal/services/hdfs/backend.rs.html |   2 -
 .../rust/src/opendal/services/http/backend.rs.html |   2 -
 .../rust/src/opendal/services/ipfs/backend.rs.html |   2 -
 .../src/opendal/services/ipmfs/backend.rs.html     |   2 -
 docs/rust/src/opendal/services/obs/backend.rs.html |   2 -
 docs/rust/src/opendal/services/obs/writer.rs.html  |   2 -
 .../src/opendal/services/onedrive/backend.rs.html  |  68 +-------
 .../src/opendal/services/onedrive/writer.rs.html   |   2 -
 .../rust/src/opendal/services/oss/appender.rs.html |   2 -
 docs/rust/src/opendal/services/oss/backend.rs.html |   2 -
 docs/rust/src/opendal/services/oss/core.rs.html    |   4 -
 docs/rust/src/opendal/services/oss/writer.rs.html  |   2 -
 docs/rust/src/opendal/services/s3/backend.rs.html  |   2 -
 docs/rust/src/opendal/services/s3/writer.rs.html   |   2 -
 .../rust/src/opendal/services/sftp/backend.rs.html |   2 -
 .../src/opendal/services/supabase/backend.rs.html  |   2 -
 .../src/opendal/services/supabase/writer.rs.html   |   2 -
 .../services/vercel_artifacts/backend.rs.html      |  30 +---
 .../services/vercel_artifacts/writer.rs.html       |   2 -
 .../src/opendal/services/wasabi/backend.rs.html    |   2 -
 docs/rust/src/opendal/services/wasabi/core.rs.html |   2 -
 .../src/opendal/services/wasabi/writer.rs.html     |   2 -
 .../src/opendal/services/webdav/backend.rs.html    |   2 -
 .../src/opendal/services/webdav/writer.rs.html     |   2 -
 .../src/opendal/services/webhdfs/backend.rs.html   |   2 -
 .../src/opendal/services/webhdfs/writer.rs.html    |   2 -
 docs/rust/src/opendal/types/appender.rs.html       |   2 -
 docs/rust/src/opendal/types/mod.rs.html            |   4 -
 .../types/operator/blocking_operator.rs.html       |  10 +-
 .../src/opendal/types/operator/operator.rs.html    |  46 ++---
 .../types/operator/operator_functions.rs.html      |   2 -
 .../types/operator/operator_futures.rs.html        |  16 +-
 docs/rust/src/opendal/types/reader.rs.html         |   2 -
 docs/rust/src/opendal/types/writer.rs.html         |   2 -
 docs/services/azblob/index.html                    |   6 +-
 docs/services/azdfs/index.html                     |   6 +-
 docs/vision/index.html                             |   6 +-
 index.html                                         |   4 +-
 224 files changed, 1043 insertions(+), 1294 deletions(-)

diff --git a/404.html b/404.html
index 933fa5ab..eddfadf7 100644
--- a/404.html
+++ b/404.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.3.1">
 <title data-rh="true">Page Not Found | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/404.html"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.cfb3adef.css">
-<link rel="preload" href="/assets/js/runtime~main.89a5daef.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d4937ab8.js" as="script">
 <link rel="preload" href="/assets/js/main.0093ba13.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="roun [...]
-<script src="/assets/js/runtime~main.89a5daef.js"></script>
+<script src="/assets/js/runtime~main.d4937ab8.js"></script>
 <script src="/assets/js/main.0093ba13.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/assets/js/1db64337.c6d87b9a.js b/assets/js/1db64337.c6d87b9a.js
deleted file mode 100644
index 760f8470..00000000
--- a/assets/js/1db64337.c6d87b9a.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[372],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>f});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}retur [...]
\ No newline at end of file
diff --git a/assets/js/1db64337.e8791977.js b/assets/js/1db64337.e8791977.js
new file mode 100644
index 00000000..d56f057d
--- /dev/null
+++ b/assets/js/1db64337.e8791977.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[372],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}retur [...]
\ No newline at end of file
diff --git a/assets/js/57a16c1d.17efc102.js b/assets/js/57a16c1d.106bb508.js
similarity index 83%
rename from assets/js/57a16c1d.17efc102.js
rename to assets/js/57a16c1d.106bb508.js
index 8f28ed06..f9377c15 100644
--- a/assets/js/57a16c1d.17efc102.js
+++ b/assets/js/57a16c1d.106bb508.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[757],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>b});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}retur [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[757],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>b});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}retur [...]
\ No newline at end of file
diff --git a/assets/js/62a401e9.e382b33a.js b/assets/js/62a401e9.35bef5c4.js
similarity index 84%
rename from assets/js/62a401e9.e382b33a.js
rename to assets/js/62a401e9.35bef5c4.js
index e5d6822f..8e5cd308 100644
--- a/assets/js/62a401e9.e382b33a.js
+++ b/assets/js/62a401e9.35bef5c4.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[89],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>f});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return [...]
\ No newline at end of file
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[89],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>f});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return [...]
\ No newline at end of file
diff --git a/assets/js/ae4554eb.1c1ad5ae.js b/assets/js/ae4554eb.1c1ad5ae.js
deleted file mode 100644
index aa5332a2..00000000
--- a/assets/js/ae4554eb.1c1ad5ae.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[983],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>f});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}retur [...]
\ No newline at end of file
diff --git a/assets/js/ae4554eb.e07f348a.js b/assets/js/ae4554eb.e07f348a.js
new file mode 100644
index 00000000..06f18946
--- /dev/null
+++ b/assets/js/ae4554eb.e07f348a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[983],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>f});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}retur [...]
\ No newline at end of file
diff --git a/assets/js/runtime~main.89a5daef.js b/assets/js/runtime~main.d4937ab8.js
similarity index 93%
rename from assets/js/runtime~main.89a5daef.js
rename to assets/js/runtime~main.d4937ab8.js
index 5728cf52..6846484b 100644
--- a/assets/js/runtime~main.89a5daef.js
+++ b/assets/js/runtime~main.d4937ab8.js
@@ -1 +1 @@
-(()=>{"use strict";var e,t,r,a,o,f={},n={};function c(e){var t=n[e];if(void 0!==t)return t.exports;var r=n[e]={exports:{}};return f[e].call(r.exports,r,r.exports,c),r.exports}c.m=f,e=[],c.O=(t,r,a,o)=>{if(!r){var f=1/0;for(i=0;i<e.length;i++){r=e[i][0],a=e[i][1],o=e[i][2];for(var n=!0,b=0;b<r.length;b++)(!1&o||f>=o)&&Object.keys(c.O).every((e=>c.O[e](r[b])))?r.splice(b--,1):(n=!1,o<f&&(f=o));if(n){e.splice(i--,1);var d=a();void 0!==d&&(t=d)}}return t}o=o||0;for(var i=e.length;i>0&&e[i-1] [...]
\ No newline at end of file
+(()=>{"use strict";var e,t,r,a,o,f={},n={};function c(e){var t=n[e];if(void 0!==t)return t.exports;var r=n[e]={exports:{}};return f[e].call(r.exports,r,r.exports,c),r.exports}c.m=f,e=[],c.O=(t,r,a,o)=>{if(!r){var f=1/0;for(i=0;i<e.length;i++){r=e[i][0],a=e[i][1],o=e[i][2];for(var n=!0,b=0;b<r.length;b++)(!1&o||f>=o)&&Object.keys(c.O).every((e=>c.O[e](r[b])))?r.splice(b--,1):(n=!1,o<f&&(f=o));if(n){e.splice(i--,1);var d=a();void 0!==d&&(t=d)}}return t}o=o||0;for(var i=e.length;i>0&&e[i-1] [...]
\ No newline at end of file
diff --git a/blog/archive/index.html b/blog/archive/index.html
index 4a8fffb3..1500077e 100644
--- a/blog/archive/index.html
+++ b/blog/archive/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.3.1">
 <title data-rh="true">Archive | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog/archive"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="t [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.cfb3adef.css">
-<link rel="preload" href="/assets/js/runtime~main.89a5daef.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d4937ab8.js" as="script">
 <link rel="preload" href="/assets/js/main.0093ba13.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="roun [...]
-<script src="/assets/js/runtime~main.89a5daef.js"></script>
+<script src="/assets/js/runtime~main.d4937ab8.js"></script>
 <script src="/assets/js/main.0093ba13.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/index.html b/blog/index.html
index 4180386f..57302434 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.3.1">
 <title data-rh="true">Blog | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" property="og:title" content="Blog | Apache OpenDAL"><meta data-rh=" [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.cfb3adef.css">
-<link rel="preload" href="/assets/js/runtime~main.89a5daef.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d4937ab8.js" as="script">
 <link rel="preload" href="/assets/js/main.0093ba13.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="roun [...]
-<script src="/assets/js/runtime~main.89a5daef.js"></script>
+<script src="/assets/js/runtime~main.d4937ab8.js"></script>
 <script src="/assets/js/main.0093ba13.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/opendal-entered-apache-incubator/index.html b/blog/opendal-entered-apache-incubator/index.html
index 257e863e..1e524193 100644
--- a/blog/opendal-entered-apache-incubator/index.html
+++ b/blog/opendal-entered-apache-incubator/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.3.1">
 <title data-rh="true">Way to Go: OpenDAL successfully entered Apache Incubator | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog/opendal-entered-apache-incubator"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><m [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.cfb3adef.css">
-<link rel="preload" href="/assets/js/runtime~main.89a5daef.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d4937ab8.js" as="script">
 <link rel="preload" href="/assets/js/main.0093ba13.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="roun [...]
-<script src="/assets/js/runtime~main.89a5daef.js"></script>
+<script src="/assets/js/runtime~main.d4937ab8.js"></script>
 <script src="/assets/js/main.0093ba13.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/announcement/index.html b/blog/tags/announcement/index.html
index e2c07f4d..43c7277c 100644
--- a/blog/tags/announcement/index.html
+++ b/blog/tags/announcement/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.3.1">
 <title data-rh="true">One post tagged with &quot;announcement&quot; | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog/tags/announcement"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" property [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.cfb3adef.css">
-<link rel="preload" href="/assets/js/runtime~main.89a5daef.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d4937ab8.js" as="script">
 <link rel="preload" href="/assets/js/main.0093ba13.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="roun [...]
-<script src="/assets/js/runtime~main.89a5daef.js"></script>
+<script src="/assets/js/runtime~main.d4937ab8.js"></script>
 <script src="/assets/js/main.0093ba13.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/index.html b/blog/tags/index.html
index 8998428a..ff5bb31f 100644
--- a/blog/tags/index.html
+++ b/blog/tags/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.3.1">
 <title data-rh="true">Tags | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/blog/tags"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" property="og:title" content="Tags | Apache OpenDAL"><meta data [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.cfb3adef.css">
-<link rel="preload" href="/assets/js/runtime~main.89a5daef.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d4937ab8.js" as="script">
 <link rel="preload" href="/assets/js/main.0093ba13.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="roun [...]
-<script src="/assets/js/runtime~main.89a5daef.js"></script>
+<script src="/assets/js/runtime~main.d4937ab8.js"></script>
 <script src="/assets/js/main.0093ba13.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/category/services/index.html b/docs/category/services/index.html
index 3c9024eb..44a69350 100644
--- a/docs/category/services/index.html
+++ b/docs/category/services/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.3.1">
 <title data-rh="true">Services | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/category/services"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current">< [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.cfb3adef.css">
-<link rel="preload" href="/assets/js/runtime~main.89a5daef.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d4937ab8.js" as="script">
 <link rel="preload" href="/assets/js/main.0093ba13.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="roun [...]
-<script src="/assets/js/runtime~main.89a5daef.js"></script>
+<script src="/assets/js/runtime~main.d4937ab8.js"></script>
 <script src="/assets/js/main.0093ba13.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/nodejs/classes/BlockingLister.html b/docs/nodejs/classes/BlockingLister.html
index 201d3e1b..7b74c3e0 100644
--- a/docs/nodejs/classes/BlockingLister.html
+++ b/docs/nodejs/classes/BlockingLister.html
@@ -20,7 +20,7 @@
 <ul class="tsd-hierarchy">
 <li><span class="target">BlockingLister</span></li></ul></section><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L433">index.d.ts:433</a></li></ul></aside>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L433">index.d.ts:433</a></li></ul></aside>
 <section class="tsd-panel-group tsd-index-group">
 <section class="tsd-panel tsd-index-panel">
 <details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary">
@@ -51,7 +51,7 @@
 <li class="tsd-description">
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><a href="Entry.html" class="tsd-signature-type" data-tsd-kind="Class">Entry</a></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L434">index.d.ts:434</a></li></ul></aside></li></ul></section></section></div>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L434">index.d.ts:434</a></li></ul></aside></li></ul></section></section></div>
 <div class="col-4 col-menu menu-sticky-wrap menu-highlight">
 <div class="tsd-navigation settings">
 <details class="tsd-index-accordion"><summary class="tsd-accordion-summary">
diff --git a/docs/nodejs/classes/Entry.html b/docs/nodejs/classes/Entry.html
index a7d8ddd0..98956ee7 100644
--- a/docs/nodejs/classes/Entry.html
+++ b/docs/nodejs/classes/Entry.html
@@ -20,7 +20,7 @@
 <ul class="tsd-hierarchy">
 <li><span class="target">Entry</span></li></ul></section><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L396">index.d.ts:396</a></li></ul></aside>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L396">index.d.ts:396</a></li></ul></aside>
 <section class="tsd-panel-group tsd-index-group">
 <section class="tsd-panel tsd-index-panel">
 <details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary">
@@ -53,7 +53,7 @@
 </div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">string</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L398">index.d.ts:398</a></li></ul></aside></li></ul></section></section></div>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L398">index.d.ts:398</a></li></ul></aside></li></ul></section></section></div>
 <div class="col-4 col-menu menu-sticky-wrap menu-highlight">
 <div class="tsd-navigation settings">
 <details class="tsd-index-accordion"><summary class="tsd-accordion-summary">
diff --git a/docs/nodejs/classes/Lister.html b/docs/nodejs/classes/Lister.html
index 9d1685c8..a2d174e5 100644
--- a/docs/nodejs/classes/Lister.html
+++ b/docs/nodejs/classes/Lister.html
@@ -20,7 +20,7 @@
 <ul class="tsd-hierarchy">
 <li><span class="target">Lister</span></li></ul></section><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L422">index.d.ts:422</a></li></ul></aside>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L422">index.d.ts:422</a></li></ul></aside>
 <section class="tsd-panel-group tsd-index-group">
 <section class="tsd-panel tsd-index-panel">
 <details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary">
@@ -61,7 +61,7 @@ thing internally.</p>
 </div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><a href="Entry.html" class="tsd-signature-type" data-tsd-kind="Class">Entry</a><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L431">index.d.ts:431</a></li></ul></aside></li></ul></section></section></div>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L431">index.d.ts:431</a></li></ul></aside></li></ul></section></section></div>
 <div class="col-4 col-menu menu-sticky-wrap menu-highlight">
 <div class="tsd-navigation settings">
 <details class="tsd-index-accordion"><summary class="tsd-accordion-summary">
diff --git a/docs/nodejs/classes/Metadata.html b/docs/nodejs/classes/Metadata.html
index f83111cd..c88cefa4 100644
--- a/docs/nodejs/classes/Metadata.html
+++ b/docs/nodejs/classes/Metadata.html
@@ -20,7 +20,7 @@
 <ul class="tsd-hierarchy">
 <li><span class="target">Metadata</span></li></ul></section><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L400">index.d.ts:400</a></li></ul></aside>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L400">index.d.ts:400</a></li></ul></aside>
 <section class="tsd-panel-group tsd-index-group">
 <section class="tsd-panel tsd-index-panel">
 <details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary">
@@ -63,7 +63,7 @@
 </div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L406">index.d.ts:406</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L406">index.d.ts:406</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class"><a id="contentLength" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>content<wbr/>Length</span><a href="#contentLength" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures tsd-kind-accessor tsd-parent-kind-class">
@@ -73,7 +73,7 @@
 </div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">bigint</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L408">index.d.ts:408</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L408">index.d.ts:408</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class"><a id="contentMd5" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>content<wbr/>Md5</span><a href="#contentMd5" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures tsd-kind-accessor tsd-parent-kind-class">
@@ -83,7 +83,7 @@
 </div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L410">index.d.ts:410</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L410">index.d.ts:410</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class"><a id="contentType" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>content<wbr/>Type</span><a href="#contentType" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures tsd-kind-accessor tsd-parent-kind-class">
@@ -93,7 +93,7 @@
 </div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L412">index.d.ts:412</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L412">index.d.ts:412</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class"><a id="etag" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>etag</span><a href="#etag" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures tsd-kind-accessor tsd-parent-kind-class">
@@ -103,7 +103,7 @@
 </div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L414">index.d.ts:414</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L414">index.d.ts:414</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class"><a id="lastModified" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>last<wbr/>Modified</span><a href="#lastModified" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures tsd-kind-accessor tsd-parent-kind-class">
@@ -114,7 +114,7 @@
 </div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L420">index.d.ts:420</a></li></ul></aside></li></ul></section></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L420">index.d.ts:420</a></li></ul></aside></li></ul></section></section>
 <section class="tsd-panel-group tsd-member-group">
 <h2>Methods</h2>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="isDirectory" class="tsd-anchor"></a>
@@ -126,7 +126,7 @@
 </div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L402">index.d.ts:402</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L402">index.d.ts:402</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="isFile" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>is<wbr/>File</span><a href="#isFile" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@@ -136,7 +136,7 @@
 </div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L404">index.d.ts:404</a></li></ul></aside></li></ul></section></section></div>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L404">index.d.ts:404</a></li></ul></aside></li></ul></section></section></div>
 <div class="col-4 col-menu menu-sticky-wrap menu-highlight">
 <div class="tsd-navigation settings">
 <details class="tsd-index-accordion"><summary class="tsd-accordion-summary">
diff --git a/docs/nodejs/classes/Operator.html b/docs/nodejs/classes/Operator.html
index b856b295..da8b93d9 100644
--- a/docs/nodejs/classes/Operator.html
+++ b/docs/nodejs/classes/Operator.html
@@ -20,7 +20,7 @@
 <ul class="tsd-hierarchy">
 <li><span class="target">Operator</span></li></ul></section><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L33">index.d.ts:33</a></li></ul></aside>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L33">index.d.ts:33</a></li></ul></aside>
 <section class="tsd-panel-group tsd-index-group">
 <section class="tsd-panel tsd-index-panel">
 <details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary">
@@ -76,7 +76,7 @@
 <h5><code class="tsd-tag ts-flagOptional">Optional</code> options: <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">&gt;</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <a href="Operator.html" class="tsd-signature-type" data-tsd-kind="Class">Operator</a></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L34">index.d.ts:34</a></li></ul></aside></li></ul></section></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L34">index.d.ts:34</a></li></ul></aside></li></ul></section></section>
 <section class="tsd-panel-group tsd-member-group">
 <h2>Methods</h2>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="append" class="tsd-anchor"></a>
@@ -109,7 +109,7 @@
 <h5>content: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">Buffer</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L169">index.d.ts:169</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L169">index.d.ts:169</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="check" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>check</span><a href="#check" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@@ -126,7 +126,7 @@
 </div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L77">index.d.ts:77</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L77">index.d.ts:77</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="copy" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>copy</span><a href="#copy" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@@ -149,7 +149,7 @@
 <h5>to: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L178">index.d.ts:178</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L178">index.d.ts:178</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="copySync" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>copy<wbr/>Sync</span><a href="#copySync" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@@ -172,7 +172,7 @@
 <h5>to: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L187">index.d.ts:187</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L187">index.d.ts:187</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="createDir" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>create<wbr/>Dir</span><a href="#createDir" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@@ -193,7 +193,7 @@
 <h5>path: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L104">index.d.ts:104</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L104">index.d.ts:104</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="createDirSync" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>create<wbr/>Dir<wbr/>Sync</span><a href="#createDirSync" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@@ -214,7 +214,7 @@
 <h5>path: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L113">index.d.ts:113</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L113">index.d.ts:113</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="delete" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>delete</span><a href="#delete" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@@ -240,7 +240,7 @@
 <h5>path: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L267">index.d.ts:267</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L267">index.d.ts:267</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="deleteSync" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>delete<wbr/>Sync</span><a href="#deleteSync" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@@ -261,7 +261,7 @@
 <h5>path: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L276">index.d.ts:276</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L276">index.d.ts:276</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="isExist" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>is<wbr/>Exist</span><a href="#isExist" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@@ -282,7 +282,7 @@
 <h5>path: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L86">index.d.ts:86</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L86">index.d.ts:86</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="isExistSync" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>is<wbr/>Exist<wbr/>Sync</span><a href="#isExistSync" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@@ -303,7 +303,7 @@
 <h5>path: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L95">index.d.ts:95</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L95">index.d.ts:95</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="list" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>list</span><a href="#list" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@@ -326,7 +326,7 @@
 <h5>path: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="Lister.html" class="tsd-signature-type" data-tsd-kind="Class">Lister</a><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L323">index.d.ts:323</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L323">index.d.ts:323</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="listSync" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>list<wbr/>Sync</span><a href="#listSync" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@@ -349,7 +349,7 @@
 <h5>path: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <a href="BlockingLister.html" class="tsd-signature-type" data-tsd-kind="Class">BlockingLister</a></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L346">index.d.ts:346</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L346">index.d.ts:346</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="presignRead" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>presign<wbr/>Read</span><a href="#presignRead" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@@ -373,7 +373,7 @@
 <h5>expires: <span class="tsd-signature-type">number</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/PresignedRequest.html" class="tsd-signature-type" data-tsd-kind="Interface">PresignedRequest</a><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L362">index.d.ts:362</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L362">index.d.ts:362</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="presignStat" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>presign<wbr/>Stat</span><a href="#presignStat" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@@ -397,7 +397,7 @@
 <h5>expires: <span class="tsd-signature-type">number</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/PresignedRequest.html" class="tsd-signature-type" data-tsd-kind="Interface">PresignedRequest</a><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L394">index.d.ts:394</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L394">index.d.ts:394</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="presignWrite" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>presign<wbr/>Write</span><a href="#presignWrite" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@@ -421,7 +421,7 @@
 <h5>expires: <span class="tsd-signature-type">number</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/PresignedRequest.html" class="tsd-signature-type" data-tsd-kind="Interface">PresignedRequest</a><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L378">index.d.ts:378</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L378">index.d.ts:378</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="read" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>read</span><a href="#read" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@@ -442,7 +442,7 @@
 <h5>path: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">Buffer</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L122">index.d.ts:122</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L122">index.d.ts:122</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="readSync" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>read<wbr/>Sync</span><a href="#readSync" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@@ -463,7 +463,7 @@
 <h5>path: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Buffer</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L131">index.d.ts:131</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L131">index.d.ts:131</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="remove" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>remove</span><a href="#remove" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@@ -489,7 +489,7 @@
 <h5>paths: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L288">index.d.ts:288</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L288">index.d.ts:288</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="removeAll" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>remove<wbr/>All</span><a href="#removeAll" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@@ -515,7 +515,7 @@
 <h5>path: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L300">index.d.ts:300</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L300">index.d.ts:300</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="rename" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>rename</span><a href="#rename" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@@ -539,7 +539,7 @@
 <h5>to: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L198">index.d.ts:198</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L198">index.d.ts:198</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="renameSync" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>rename<wbr/>Sync</span><a href="#renameSync" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@@ -563,7 +563,7 @@
 <h5>to: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L209">index.d.ts:209</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L209">index.d.ts:209</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="scan" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>scan</span><a href="#scan" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@@ -586,7 +586,7 @@
 <h5>path: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="Lister.html" class="tsd-signature-type" data-tsd-kind="Class">Lister</a><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L232">index.d.ts:232</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L232">index.d.ts:232</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="scanSync" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>scan<wbr/>Sync</span><a href="#scanSync" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@@ -609,7 +609,7 @@
 <h5>path: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <a href="BlockingLister.html" class="tsd-signature-type" data-tsd-kind="Class">BlockingLister</a></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L255">index.d.ts:255</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L255">index.d.ts:255</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="stat" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>stat</span><a href="#stat" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@@ -640,7 +640,7 @@
 <h5>path: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="Metadata.html" class="tsd-signature-type" data-tsd-kind="Class">Metadata</a><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L54">index.d.ts:54</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L54">index.d.ts:54</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="statSync" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>stat<wbr/>Sync</span><a href="#statSync" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@@ -661,7 +661,7 @@
 <h5>path: <span class="tsd-signature-type">string</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <a href="Metadata.html" class="tsd-signature-type" data-tsd-kind="Class">Metadata</a></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L66">index.d.ts:66</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L66">index.d.ts:66</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="write" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>write</span><a href="#write" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@@ -684,7 +684,7 @@
 <h5>content: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">Buffer</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L142">index.d.ts:142</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L142">index.d.ts:142</a></li></ul></aside></li></ul></section>
 <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="writeSync" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>write<wbr/>Sync</span><a href="#writeSync" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@@ -707,7 +707,7 @@
 <h5>content: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">Buffer</span></h5></li></ul></div>
 <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L153">index.d.ts:153</a></li></ul></aside></li></ul></section></section></div>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L153">index.d.ts:153</a></li></ul></aside></li></ul></section></section></div>
 <div class="col-4 col-menu menu-sticky-wrap menu-highlight">
 <div class="tsd-navigation settings">
 <details class="tsd-index-accordion"><summary class="tsd-accordion-summary">
diff --git a/docs/nodejs/interfaces/PresignedRequest.html b/docs/nodejs/interfaces/PresignedRequest.html
index 1fd8da80..3315b4b9 100644
--- a/docs/nodejs/interfaces/PresignedRequest.html
+++ b/docs/nodejs/interfaces/PresignedRequest.html
@@ -20,7 +20,7 @@
 <ul class="tsd-hierarchy">
 <li><span class="target">PresignedRequest</span></li></ul></section><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L25">index.d.ts:25</a></li></ul></aside>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L25">index.d.ts:25</a></li></ul></aside>
 <section class="tsd-panel-group tsd-index-group">
 <section class="tsd-panel tsd-index-panel">
 <details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary">
@@ -40,21 +40,21 @@
 <div class="tsd-comment tsd-typography"><p>HTTP headers of this request.</p>
 </div><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L31">index.d.ts:31</a></li></ul></aside></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L31">index.d.ts:31</a></li></ul></aside></section>
 <section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="method" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>method</span><a href="#method" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <div class="tsd-signature">method<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div>
 <div class="tsd-comment tsd-typography"><p>HTTP method of this request.</p>
 </div><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L27">index.d.ts:27</a></li></ul></aside></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L27">index.d.ts:27</a></li></ul></aside></section>
 <section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="url" class="tsd-anchor"></a>
 <h3 class="tsd-anchor-link"><span>url</span><a href="#url" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
 <div class="tsd-signature">url<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div>
 <div class="tsd-comment tsd-typography"><p>URL of this request.</p>
 </div><aside class="tsd-sources">
 <ul>
-<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/19241c7/bindings/nodejs/index.d.ts#L29">index.d.ts:29</a></li></ul></aside></section></section></div>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/c5b93ab/bindings/nodejs/index.d.ts#L29">index.d.ts:29</a></li></ul></aside></section></section></div>
 <div class="col-4 col-menu menu-sticky-wrap menu-highlight">
 <div class="tsd-navigation settings">
 <details class="tsd-index-accordion"><summary class="tsd-accordion-summary">
diff --git a/docs/overview/index.html b/docs/overview/index.html
index 3f8a157b..671dfee5 100644
--- a/docs/overview/index.html
+++ b/docs/overview/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.3.1">
 <title data-rh="true">Overview | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/overview"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.cfb3adef.css">
-<link rel="preload" href="/assets/js/runtime~main.89a5daef.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d4937ab8.js" as="script">
 <link rel="preload" href="/assets/js/main.0093ba13.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="roun [...]
-<script src="/assets/js/runtime~main.89a5daef.js"></script>
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="roun [...]
+<script src="/assets/js/runtime~main.d4937ab8.js"></script>
 <script src="/assets/js/main.0093ba13.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/python/opendal.html b/docs/python/opendal.html
index 8079bb78..f2baf52a 100644
--- a/docs/python/opendal.html
+++ b/docs/python/opendal.html
@@ -156,19 +156,19 @@
                     <a class="class" href="#Metadata">Metadata</a>
                             <ul class="memberlist">
                         <li>
-                                <a class="variable" href="#Metadata.etag">etag</a>
+                                <a class="variable" href="#Metadata.mode">mode</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Metadata.content_length">content_length</a>
+                                <a class="variable" href="#Metadata.content_md5">content_md5</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Metadata.content_type">content_type</a>
+                                <a class="variable" href="#Metadata.content_length">content_length</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Metadata.content_md5">content_md5</a>
+                                <a class="variable" href="#Metadata.content_type">content_type</a>
                         </li>
                         <li>
-                                <a class="variable" href="#Metadata.mode">mode</a>
+                                <a class="variable" href="#Metadata.etag">etag</a>
                         </li>
                 </ul>
 
@@ -852,67 +852,67 @@ The default value for whence is <code>SEEK_SET</code>. Values for <code>whence</
     
     
 
-                            <div id="Metadata.etag" class="classattr">
+                            <div id="Metadata.mode" class="classattr">
                                 <div class="attr variable">
-            <span class="name">etag</span><span class="annotation">: Optional[str]</span>
+            <span class="name">mode</span><span class="annotation">: <a href="#EntryMode">opendal.EntryMode</a></span>
 
         
     </div>
-    <a class="headerlink" href="#Metadata.etag"></a>
+    <a class="headerlink" href="#Metadata.mode"></a>
     
-            <div class="docstring"><p>ETag of this entry.</p>
+            <div class="docstring"><p>mode represent this entry's mode.</p>
 </div>
 
 
                             </div>
-                            <div id="Metadata.content_length" class="classattr">
+                            <div id="Metadata.content_md5" class="classattr">
                                 <div class="attr variable">
-            <span class="name">content_length</span><span class="annotation">: int</span>
+            <span class="name">content_md5</span><span class="annotation">: Optional[str]</span>
 
         
     </div>
-    <a class="headerlink" href="#Metadata.content_length"></a>
+    <a class="headerlink" href="#Metadata.content_md5"></a>
     
-            <div class="docstring"><p>Content length of this entry.</p>
+            <div class="docstring"><p>Content MD5 of this entry.</p>
 </div>
 
 
                             </div>
-                            <div id="Metadata.content_type" class="classattr">
+                            <div id="Metadata.content_length" class="classattr">
                                 <div class="attr variable">
-            <span class="name">content_type</span><span class="annotation">: Optional[str]</span>
+            <span class="name">content_length</span><span class="annotation">: int</span>
 
         
     </div>
-    <a class="headerlink" href="#Metadata.content_type"></a>
+    <a class="headerlink" href="#Metadata.content_length"></a>
     
-            <div class="docstring"><p>Content Type of this entry.</p>
+            <div class="docstring"><p>Content length of this entry.</p>
 </div>
 
 
                             </div>
-                            <div id="Metadata.content_md5" class="classattr">
+                            <div id="Metadata.content_type" class="classattr">
                                 <div class="attr variable">
-            <span class="name">content_md5</span><span class="annotation">: Optional[str]</span>
+            <span class="name">content_type</span><span class="annotation">: Optional[str]</span>
 
         
     </div>
-    <a class="headerlink" href="#Metadata.content_md5"></a>
+    <a class="headerlink" href="#Metadata.content_type"></a>
     
-            <div class="docstring"><p>Content MD5 of this entry.</p>
+            <div class="docstring"><p>Content Type of this entry.</p>
 </div>
 
 
                             </div>
-                            <div id="Metadata.mode" class="classattr">
+                            <div id="Metadata.etag" class="classattr">
                                 <div class="attr variable">
-            <span class="name">mode</span><span class="annotation">: <a href="#EntryMode">opendal.EntryMode</a></span>
+            <span class="name">etag</span><span class="annotation">: Optional[str]</span>
 
         
     </div>
-    <a class="headerlink" href="#Metadata.mode"></a>
+    <a class="headerlink" href="#Metadata.etag"></a>
     
-            <div class="docstring"><p>mode represent this entry's mode.</p>
+            <div class="docstring"><p>ETag of this entry.</p>
 </div>
 
 
diff --git a/docs/python/search.js b/docs/python/search.js
index adacfca7..6ad5d323 100644
--- a/docs/python/search.js
+++ b/docs/python/search.js
@@ -1,6 +1,6 @@
 window.pdocSearch = (function(){
 /** elasticlunr - http://weixsong.github.io * Copyright (C) 2017 Oliver Nightingale * Copyright (C) 2017 Wei Song * MIT Licensed */!function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.wa [...]
-    /** pdoc search index */const docs = {"version": "0.9.5", "fields": ["qualname", "fullname", "annotation", "default_value", "signature", "bases", "doc"], "ref": "fullname", "documentStore": {"docs": {"opendal": {"fullname": "opendal", "modulename": "opendal", "kind": "module", "doc": "<p>OpenDAL Python binding</p>\n\n<h2 id=\"installation\">Installation</h2>\n\n<div class=\"pdoc-code codehilite\">\n<pre><span></span><code>pip<span class=\"w\"> </span>install<span class=\"w\"> </span> [...]
+    /** pdoc search index */const docs = {"version": "0.9.5", "fields": ["qualname", "fullname", "annotation", "default_value", "signature", "bases", "doc"], "ref": "fullname", "documentStore": {"docs": {"opendal": {"fullname": "opendal", "modulename": "opendal", "kind": "module", "doc": "<p>OpenDAL Python binding</p>\n\n<h2 id=\"installation\">Installation</h2>\n\n<div class=\"pdoc-code codehilite\">\n<pre><span></span><code>pip<span class=\"w\"> </span>install<span class=\"w\"> </span> [...]
 
     // mirrored in build-search-index.js (part 1)
     // Also split on html tags. this is a cheap heuristic, but good enough.
diff --git a/docs/rust/implementors/core/clone/trait.Clone.js b/docs/rust/implementors/core/clone/trait.Clone.js
index 335f50bb..303df0d4 100644
--- a/docs/rust/implementors/core/clone/trait.Clone.js
+++ b/docs/rust/implementors/core/clone/trait.Clone.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"opendal/services/struct.Obs.html\" title=\"struct opendal::services::Obs\">ObsBuilder</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"opendal/ops/struct.OpAppend.html\" title=\"st [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"opendal/services/struct.Obs.html\" title=\"struct opendal::services::Obs\">ObsBuilder</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"opendal/raw/struct.RpRename.html\" title=\"st [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/convert/trait.From.js b/docs/rust/implementors/core/convert/trait.From.js
index 14c2a4c0..9e8cb987 100644
--- a/docs/rust/implementors/core/convert/trait.From.js
+++ b/docs/rust/implementors/core/convert/trait.From.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;RedisError&gt; for <a class=\"struct\" href=\"opendal/struct.Error.html\" title=\"struct opendal::Error\">Error</a>"],["impl&lt;T&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;T&gt; for <a class=\"struct\" href=\"opendal/raw/struct.BytesRan [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;<a class=\"struct\" href=\"opendal/raw/struct.OpWrite.html\" title=\"struct opendal::raw::OpWrite\">OpWrite</a>&gt; for <a class=\"enum\" href=\"opendal/raw/enum.PresignOperation.html\" title=\"enum opendal::raw::PresignOperation\">PresignOperation</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/convert/tr [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/default/trait.Default.js b/docs/rust/implementors/core/default/trait.Default.js
index 19174831..45efbb59 100644
--- a/docs/rust/implementors/core/default/trait.Default.js
+++ b/docs/rust/implementors/core/default/trait.Default.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"opendal/ops/struct.OpList.html\" title=\"struct opendal::ops::OpList\">OpList</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"opendal/raw/struct.BytesContentRa [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"opendal/raw/struct.BytesContentRange.html\" title=\"struct opendal::raw::BytesContentRange\">BytesContentRange</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\" [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/fmt/trait.Debug.js b/docs/rust/implementors/core/fmt/trait.Debug.js
index ceabd801..99cae218 100644
--- a/docs/rust/implementors/core/fmt/trait.Debug.js
+++ b/docs/rust/implementors/core/fmt/trait.Debug.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"opendal/services/struct.Wasabi.html\" title=\"struct opendal::services::Wasabi\">WasabiBuilder</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"opendal/raw/struct.PresignedRequest.html\" t [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"opendal/services/struct.Wasabi.html\" title=\"struct opendal::services::Wasabi\">WasabiBuilder</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"opendal/raw/struct.OpRename.html\" title=\"s [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/marker/trait.Freeze.js b/docs/rust/implementors/core/marker/trait.Freeze.js
index 2e84beb0..8f50beb5 100644
--- a/docs/rust/implementors/core/marker/trait.Freeze.js
+++ b/docs/rust/implementors/core/marker/trait.Freeze.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl Freeze for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl Freeze for <a class=\"struct\" href=\"opendal/struct.Entry.html\" title=\"struct opendal::Entry\">Entry</a>",1,["opendal::types::entry::Entry"]],["impl Freeze for <a class=\"struct\" href=\"opendal/struct.Metadata.html\" title=\"struct opendal::Metadata\">Metadata</a>",1,["opendal::types::metadata::Metadata"]],[ [...]
+"opendal":[["impl Freeze for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl Freeze for <a class=\"struct\" href=\"opendal/struct.Entry.html\" title=\"struct opendal::Entry\">Entry</a>",1,["opendal::types::entry::Entry"]],["impl Freeze for <a class=\"struct\" href=\"opendal/struct.Metadata.html\" title=\"struct opendal::Metadata\">Metadata</a>",1,["opendal::types::metadata::Metadata"]],[ [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/marker/trait.Send.js b/docs/rust/implementors/core/marker/trait.Send.js
index 822d6bb6..9d9bbd62 100644
--- a/docs/rust/implementors/core/marker/trait.Send.js
+++ b/docs/rust/implementors/core/marker/trait.Send.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"opendal/struct.Entry.ht [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"opendal/struct.Entry.ht [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/marker/trait.Sync.js b/docs/rust/implementors/core/marker/trait.Sync.js
index 80f53335..5cbb98cf 100644
--- a/docs/rust/implementors/core/marker/trait.Sync.js
+++ b/docs/rust/implementors/core/marker/trait.Sync.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"opendal/struct.Entry.ht [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"opendal/struct.Entry.ht [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/marker/trait.Unpin.js b/docs/rust/implementors/core/marker/trait.Unpin.js
index 1d3d8ea8..f021fb47 100644
--- a/docs/rust/implementors/core/marker/trait.Unpin.js
+++ b/docs/rust/implementors/core/marker/trait.Unpin.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"opendal/struct.En [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"opendal/struct.En [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js b/docs/rust/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
index 9ff5c490..4609f2bb 100644
--- a/docs/rust/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
+++ b/docs/rust/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::u [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::u [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/panic/unwind_safe/trait.UnwindSafe.js b/docs/rust/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
index 1cc9e709..843ce629 100644
--- a/docs/rust/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
+++ b/docs/rust/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe:: [...]
+"opendal":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe:: [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/opendal/all.html b/docs/rust/opendal/all.html
index d7b507b5..ca44402d 100644
--- a/docs/rust/opendal/all.html
+++ b/docs/rust/opendal/all.html
@@ -1 +1 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="List of all items in this crate"><title>List of all items in this crate</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.fi [...]
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="List of all items in this crate"><title>List of all items in this crate</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.fi [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/index.html b/docs/rust/opendal/index.html
index e1b86f74..e7901eb3 100644
--- a/docs/rust/opendal/index.html
+++ b/docs/rust/opendal/index.html
@@ -39,14 +39,13 @@
 
     <span class="prelude-val">Ok</span>(())
 }</code></pre></div>
-</div></details><h2 id="modules" class="small-section-header"><a href="#modules">Modules</a></h2><ul class="item-table"><li><div class="item-name"><a class="mod" href="docs/index.html" title="mod opendal::docs">docs</a></div><div class="desc docblock-short">This module holds documentation for OpenDAL.</div></li><li><div class="item-name"><a class="mod" href="layers/index.html" title="mod opendal::layers">layers</a></div><div class="desc docblock-short"><code>Layer</code> is the mechanism [...]
+</div></details><h2 id="modules" class="small-section-header"><a href="#modules">Modules</a></h2><ul class="item-table"><li><div class="item-name"><a class="mod" href="docs/index.html" title="mod opendal::docs">docs</a></div><div class="desc docblock-short">This module holds documentation for OpenDAL.</div></li><li><div class="item-name"><a class="mod" href="layers/index.html" title="mod opendal::layers">layers</a></div><div class="desc docblock-short"><code>Layer</code> is the mechanism [...]
 manner.</div></li><li><div class="item-name"><a class="struct" href="struct.BlockingLister.html" title="struct opendal::BlockingLister">BlockingLister</a></div><div class="desc docblock-short">BlockingLister is designed to list entries at given path in a blocking
 manner.</div></li><li><div class="item-name"><a class="struct" href="struct.BlockingOperator.html" title="struct opendal::BlockingOperator">BlockingOperator</a></div><div class="desc docblock-short">BlockingOperator is the entry for all public blocking APIs.</div></li><li><div class="item-name"><a class="struct" href="struct.BlockingReader.html" title="struct opendal::BlockingReader">BlockingReader</a></div><div class="desc docblock-short">BlockingReader is designed to read data from giv [...]
 manner.</div></li><li><div class="item-name"><a class="struct" href="struct.BlockingWriter.html" title="struct opendal::BlockingWriter">BlockingWriter</a></div><div class="desc docblock-short">BlockingWriter is designed to write data into given path in an blocking
 manner.</div></li><li><div class="item-name"><a class="struct" href="struct.Capability.html" title="struct opendal::Capability">Capability</a></div><div class="desc docblock-short">Capability is used to describe what operations are supported
 by current Operator.</div></li><li><div class="item-name"><a class="struct" href="struct.Entry.html" title="struct opendal::Entry">Entry</a></div><div class="desc docblock-short">Entry is the file/dir entry returned by <code>Lister</code>.</div></li><li><div class="item-name"><a class="struct" href="struct.Error.html" title="struct opendal::Error">Error</a></div><div class="desc docblock-short">Error is the error struct returned by all opendal functions.</div></li><li><div class="item-na [...]
-manner.</div></li><li><div class="item-name"><a class="struct" href="struct.Metadata.html" title="struct opendal::Metadata">Metadata</a></div><div class="desc docblock-short">Metadata carries all metadata associated with an path.</div></li><li><div class="item-name"><a class="struct" href="struct.Operator.html" title="struct opendal::Operator">Operator</a></div><div class="desc docblock-short">Operator is the entry for all public async APIs.
-Developer should manipulate the data from storage service through Operator only by right.</div></li><li><div class="item-name"><a class="struct" href="struct.OperatorBuilder.html" title="struct opendal::OperatorBuilder">OperatorBuilder</a></div><div class="desc docblock-short">OperatorBuilder is a typed builder to build an Operator.</div></li><li><div class="item-name"><a class="struct" href="struct.OperatorInfo.html" title="struct opendal::OperatorInfo">OperatorInfo</a></div><div class= [...]
+manner.</div></li><li><div class="item-name"><a class="struct" href="struct.Metadata.html" title="struct opendal::Metadata">Metadata</a></div><div class="desc docblock-short">Metadata carries all metadata associated with an path.</div></li><li><div class="item-name"><a class="struct" href="struct.Operator.html" title="struct opendal::Operator">Operator</a></div><div class="desc docblock-short">Operator is the entry for all public async APIs.</div></li><li><div class="item-name"><a class= [...]
 manner.</div></li><li><div class="item-name"><a class="struct" href="struct.Writer.html" title="struct opendal::Writer">Writer</a></div><div class="desc docblock-short">Writer is designed to write data into given path in an asynchronous
 manner.</div></li></ul><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2><ul class="item-table"><li><div class="item-name"><a class="enum" href="enum.EntryMode.html" title="enum opendal::EntryMode">EntryMode</a></div><div class="desc docblock-short">EntryMode represents the mode.</div></li><li><div class="item-name"><a class="enum" href="enum.ErrorKind.html" title="enum opendal::ErrorKind">ErrorKind</a></div><div class="desc docblock-short">ErrorKind is all kinds [...]
 or queried.</div></li><li><div class="item-name"><a class="enum" href="enum.Scheme.html" title="enum opendal::Scheme">Scheme</a></div><div class="desc docblock-short">Services that OpenDAL supports</div></li></ul><h2 id="traits" class="small-section-header"><a href="#traits">Traits</a></h2><ul class="item-table"><li><div class="item-name"><a class="trait" href="trait.Builder.html" title="trait opendal::Builder">Builder</a></div><div class="desc docblock-short">Builder is used to set up a [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/layers/struct.ChaosLayer.html b/docs/rust/opendal/layers/struct.ChaosLayer.html
index 77e1e17b..10a0eedd 100644
--- a/docs/rust/opendal/layers/struct.ChaosLayer.html
+++ b/docs/rust/opendal/layers/struct.ChaosLayer.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Inject chaos into underlying services for robustness test."><title>ChaosLayer in opendal::layers - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/wo [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Inject chaos into underlying services for robustness test."><title>ChaosLayer in opendal::layers - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/wo [...]
 <h2 id="chaos"><a href="#chaos">Chaos</a></h2>
 <p>Chaos tests is a part of stress test. By generating errors at specified
 error ratio, we can reproduce underlying services error more reliable.</p>
@@ -19,10 +19,10 @@ be added in the future.</p>
     .expect(<span class="string">&quot;must init&quot;</span>)
     .layer(ChaosLayer::new(<span class="number">0.1</span>))
     .finish();</code></pre></div>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-ChaosLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/chaos.rs.html#68-81">source</a><a href="#impl-ChaosLayer" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.ChaosLayer.html" title="s [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-ChaosLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/chaos.rs.html#67-80">source</a><a href="#impl-ChaosLayer" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.ChaosLayer.html" title="s [...]
 <h5 id="panics"><a href="#panics">Panics</a></h5>
 <p>Input error_ratio must in [0.0..=1.0]</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-ChaosLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/chaos.rs.html#63">source</a><a href="#impl-Clone-for-ChaosLayer" class="anchor">§</a><h3 class="code-header [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-ChaosLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/chaos.rs.html#62">source</a><a href="#impl-Clone-for-ChaosLayer" class="anchor">§</a><h3 class="code-header [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/layers/struct.ConcurrentLimitLayer.html b/docs/rust/opendal/layers/struct.ConcurrentLimitLayer.html
index 3972540c..a0f7ebe0 100644
--- a/docs/rust/opendal/layers/struct.ConcurrentLimitLayer.html
+++ b/docs/rust/opendal/layers/struct.ConcurrentLimitLayer.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Add concurrent request limit."><title>ConcurrentLimitLayer in opendal::layers - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin hr [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Add concurrent request limit."><title>ConcurrentLimitLayer in opendal::layers - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin hr [...]
 <h2 id="notes"><a href="#notes">Notes</a></h2>
 <p>Users can control how many concurrent connections could be established
 between OpenDAL and underlying storage services.</p>
@@ -13,8 +13,8 @@ between OpenDAL and underlying storage services.</p>
     .expect(<span class="string">&quot;must init&quot;</span>)
     .layer(ConcurrentLimitLayer::new(<span class="number">1024</span>))
     .finish();</code></pre></div>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-ConcurrentLimitLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/concurrent_limit.rs.html#59-64">source</a><a href="#impl-ConcurrentLimitLayer" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="s [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-ConcurrentLimitLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/concurrent_limit.rs.html#54">source</a><a href="#impl-Clone-for-ConcurrentLimitLayer" class="anch [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-ConcurrentLimitLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/concurrent_limit.rs.html#58-63">source</a><a href="#impl-ConcurrentLimitLayer" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="s [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-ConcurrentLimitLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/concurrent_limit.rs.html#53">source</a><a href="#impl-Clone-for-ConcurrentLimitLayer" class="anch [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/layers/struct.ImmutableIndexLayer.html b/docs/rust/opendal/layers/struct.ImmutableIndexLayer.html
index 3c424ffd..3e783af3 100644
--- a/docs/rust/opendal/layers/struct.ImmutableIndexLayer.html
+++ b/docs/rust/opendal/layers/struct.ImmutableIndexLayer.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Add an immutable in-memory index for underlying storage services."><title>ImmutableIndexLayer in opendal::layers - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="fon [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Add an immutable in-memory index for underlying storage services."><title>ImmutableIndexLayer in opendal::layers - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="fon [...]
 <p>Especially useful for services without list capability like HTTP.</p>
 <h2 id="examples"><a href="#examples">Examples</a></h2>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::collections::HashMap;
@@ -17,10 +17,10 @@
     .unwrap()
     .layer(iil)
     .finish();</code></pre></div>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-ImmutableIndexLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/immutable_index.rs.html#57-70">source</a><a href="#impl-ImmutableIndexLayer" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="stru [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.extend_iter" class="method"><a class="srclink rightside" href="../../src/opendal/layers/immutable_index.rs.html#64-69">source</a><h4 class="code-header">pub fn <a href="#method.extend_iter" class="fn">extend_iter</a>&lt;I&gt;(&amp;mut self, iter: I)<span class="where fmt-newline">where
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-ImmutableIndexLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/immutable_index.rs.html#56-69">source</a><a href="#impl-ImmutableIndexLayer" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="stru [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.extend_iter" class="method"><a class="srclink rightside" href="../../src/opendal/layers/immutable_index.rs.html#63-68">source</a><h4 class="code-header">pub fn <a href="#method.extend_iter" class="fn">extend_iter</a>&lt;I&gt;(&amp;mut self, iter: I)<span class="where fmt-newline">where
     I: <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&lt;Item = <a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;,</span></h4></section></summary><div class="docblock"><p>Insert keys from iter.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-ImmutableIndexLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/immutable_index.rs.html#52">source</a><a href="#impl-Clone-for-ImmutableIndexLayer" class="anchor" [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-ImmutableIndexLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/immutable_index.rs.html#51">source</a><a href="#impl-Clone-for-ImmutableIndexLayer" class="anchor" [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/layers/struct.LoggingLayer.html b/docs/rust/opendal/layers/struct.LoggingLayer.html
index 5f1f01f9..e257ed7a 100644
--- a/docs/rust/opendal/layers/struct.LoggingLayer.html
+++ b/docs/rust/opendal/layers/struct.LoggingLayer.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Add log for every operations."><title>LoggingLayer in opendal::layers - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../. [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Add log for every operations."><title>LoggingLayer in opendal::layers - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../. [...]
 <h2 id="logging"><a href="#logging">Logging</a></h2>
 <ul>
 <li>OpenDAL will log in structural way.</li>
@@ -34,13 +34,13 @@
 </code></pre></div>
 <p>To config logging output, please refer to <a href="https://rust-lang-nursery.github.io/rust-cookbook/development_tools/debugging/config_log.html">Configure Logging</a>:</p>
 <div class="example-wrap"><pre class="language-shell"><code>RUST_LOG=&quot;info,opendal::services=debug&quot; ./app
-</code></pre></div></div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-LoggingLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/logging.rs.html#102-138">source</a><a href="#impl-LoggingLayer" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struc [...]
+</code></pre></div></div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-LoggingLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/logging.rs.html#101-137">source</a><a href="#impl-LoggingLayer" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struc [...]
 <p>For example: accessor returns NotFound.</p>
 <p><code>None</code> means disable the log for error.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.with_failure_level" class="method"><a class="srclink rightside" href="../../src/opendal/layers/logging.rs.html#126-137">source</a><h4 class="code-header">pub fn <a href="#method.with_failure_level" class="fn">with_failure_level</a>(self, level: <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive"  [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_failure_level" class="method"><a class="srclink rightside" href="../../src/opendal/layers/logging.rs.html#125-136">source</a><h4 class="code-header">pub fn <a href="#method.with_failure_level" class="fn">with_failure_level</a>(self, level: <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive"  [...]
 <p>For example: accessor returns Unexpected network error.</p>
 <p><code>None</code> means disable the log for failure.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-LoggingLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/logging.rs.html#87">source</a><a href="#impl-Clone-for-LoggingLayer" class="anchor">§</a><h3 class="code- [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-LoggingLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/logging.rs.html#86">source</a><a href="#impl-Clone-for-LoggingLayer" class="anchor">§</a><h3 class="code- [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/layers/struct.MadsimLayer.html b/docs/rust/opendal/layers/struct.MadsimLayer.html
index 3f8150fe..88c99101 100644
--- a/docs/rust/opendal/layers/struct.MadsimLayer.html
+++ b/docs/rust/opendal/layers/struct.MadsimLayer.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Add deterministic simulation for async operations, powered by `madsim`."><title>MadsimLayer in opendal::layers - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Add deterministic simulation for async operations, powered by `madsim`."><title>MadsimLayer in opendal::layers - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" [...]
 <h2 id="note"><a href="#note">Note</a></h2>
 <ul>
 <li>blocking operations are not supported, as <a href="https://docs.rs/madsim/latest/madsim/"><code>madsim</code></a> is async only.</li>
@@ -46,8 +46,8 @@
 }</code></pre></div>
 <p>To enable logging output, please set <code>RUSTFLAGS=&quot;--cfg madsim&quot;</code>:</p>
 <div class="example-wrap"><pre class="language-shell"><code>RUSTFLAGS=&quot;--cfg madsim&quot; cargo test
-</code></pre></div></div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-MadsimLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/madsim.rs.html#109-123">source</a><a href="#impl-MadsimLayer" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.M [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-MadsimLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/madsim.rs.html#103">source</a><a href="#impl-Clone-for-MadsimLayer" class="anchor">§</a><h3 class="code-he [...]
+</code></pre></div></div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-MadsimLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/madsim.rs.html#108-122">source</a><a href="#impl-MadsimLayer" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.M [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-MadsimLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/madsim.rs.html#102">source</a><a href="#impl-Clone-for-MadsimLayer" class="anchor">§</a><h3 class="code-he [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/layers/struct.MadsimServer.html b/docs/rust/opendal/layers/struct.MadsimServer.html
index 49ab0ed7..8dfd0282 100644
--- a/docs/rust/opendal/layers/struct.MadsimServer.html
+++ b/docs/rust/opendal/layers/struct.MadsimServer.html
@@ -1,6 +1,6 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A simulated server.This an experimental feature, docs are not ready yet."><title>MadsimServer in opendal::layers - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="fon [...]
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-MadsimServer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/madsim.rs.html#368-402">source</a><a href="#impl-MadsimServer" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.MadsimServer.html" [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-MadsimServer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/madsim.rs.html#365">source</a><a href="#impl-Clone-for-MadsimServer" class="anchor">§</a><h3 class="code- [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A simulated server.This an experimental feature, docs are not ready yet."><title>MadsimServer in opendal::layers - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="fon [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-MadsimServer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/madsim.rs.html#367-401">source</a><a href="#impl-MadsimServer" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.MadsimServer.html" [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-MadsimServer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/madsim.rs.html#364">source</a><a href="#impl-Clone-for-MadsimServer" class="anchor">§</a><h3 class="code- [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/layers/struct.MetricsLayer.html b/docs/rust/opendal/layers/struct.MetricsLayer.html
index d860684d..dcb16ff1 100644
--- a/docs/rust/opendal/layers/struct.MetricsLayer.html
+++ b/docs/rust/opendal/layers/struct.MetricsLayer.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Add metrics for every operations."><title>MetricsLayer in opendal::layers - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href=" [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Add metrics for every operations."><title>MetricsLayer in opendal::layers - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href=" [...]
 <h2 id="metrics"><a href="#metrics">Metrics</a></h2>
 <ul>
 <li><code>opendal_requests_total</code>: Total request numbers.</li>
@@ -37,7 +37,7 @@ builder.install().expect(<span class="string">&quot;failed to install recorder/e
 <span class="kw">let </span>handle = builder.install_recorder().expect(<span class="string">&quot;failed to install recorder&quot;</span>);
 <span class="kw">let </span>(recorder, exporter) = builder.build().expect(<span class="string">&quot;failed to build recorder/exporter&quot;</span>);
 <span class="kw">let </span>recorder = builder.build_recorder().expect(<span class="string">&quot;failed to build recorder&quot;</span>);</code></pre></div>
-</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-MetricsLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/metrics.rs.html#117">source</a><a href="#impl-Clone-for-MetricsLayer" class="anchor">§</a><h3 class="code-header">impl <a class [...]
+</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-MetricsLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/metrics.rs.html#116">source</a><a href="#impl-Clone-for-MetricsLayer" class="anchor">§</a><h3 class="code-header">impl <a class [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/layers/struct.MinitraceLayer.html b/docs/rust/opendal/layers/struct.MinitraceLayer.html
index c9c57cd6..35c7d95f 100644
--- a/docs/rust/opendal/layers/struct.MinitraceLayer.html
+++ b/docs/rust/opendal/layers/struct.MinitraceLayer.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Add minitrace for every operations."><title>MinitraceLayer in opendal::layers - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin hr [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Add minitrace for every operations."><title>MinitraceLayer in opendal::layers - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin hr [...]
 <h2 id="examples"><a href="#examples">Examples</a></h2><h3 id="basic-setup"><a href="#basic-setup">Basic Setup</a></h3>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>anyhow::Result;
 <span class="kw">use </span>opendal::layers::MinitraceLayer;
@@ -62,7 +62,7 @@
     minitrace_jaeger::encode(<span class="string">&quot;opendal&quot;</span>.to_owned(), rand::random(), <span class="number">0</span>, <span class="number">0</span>, <span class="kw-2">&amp;</span>spans).unwrap();
 minitrace_jaeger::report_blocking(<span class="string">&quot;127.0.0.1:6831&quot;</span>.parse().unwrap(), <span class="kw-2">&amp;</span>bytes).expect(<span class="string">&quot;report error&quot;</span>);</code></pre></div>
 <p>For real-world usage, please take a look at <a href="https://crates.io/crates/minitrace-datadog"><code>minitrace-datadog</code></a> or <a href="https://crates.io/crates/minitrace-jaeger"><code>minitrace-jaeger</code></a> .</p>
-</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Layer%3CA%3E-for-MinitraceLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/minitrace.rs.html#118-124">source</a><a href="#impl-Layer%3CA%3E-for-MinitraceLayer" class="anchor">§</a><h3 class="co [...]
+</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Layer%3CA%3E-for-MinitraceLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/minitrace.rs.html#117-123">source</a><a href="#impl-Layer%3CA%3E-for-MinitraceLayer" class="anchor">§</a><h3 class="co [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/layers/struct.OtelTraceLayer.html b/docs/rust/opendal/layers/struct.OtelTraceLayer.html
index 04259b2a..3503da72 100644
--- a/docs/rust/opendal/layers/struct.OtelTraceLayer.html
+++ b/docs/rust/opendal/layers/struct.OtelTraceLayer.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Add opentelemetry::trace for every operations."><title>OtelTraceLayer in opendal::layers - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" cro [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Add opentelemetry::trace for every operations."><title>OtelTraceLayer in opendal::layers - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" cro [...]
 <p>Examples</p>
 <h3 id="basic-setup"><a href="#basic-setup">Basic Setup</a></h3>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>anyhow::Result;
@@ -10,7 +10,7 @@
     .expect(<span class="string">&quot;must init&quot;</span>)
     .layer(OtelTraceLayer)
     .finish();</code></pre></div>
-</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Layer%3CA%3E-for-OtelTraceLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/oteltrace.rs.html#56-62">source</a><a href="#impl-Layer%3CA%3E-for-OtelTraceLayer" class="anchor">§</a><h3 class="code [...]
+</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Layer%3CA%3E-for-OtelTraceLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/oteltrace.rs.html#55-61">source</a><a href="#impl-Layer%3CA%3E-for-OtelTraceLayer" class="anchor">§</a><h3 class="code [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/layers/struct.PrometheusLayer.html b/docs/rust/opendal/layers/struct.PrometheusLayer.html
index 98c0db8a..599e745e 100644
--- a/docs/rust/opendal/layers/struct.PrometheusLayer.html
+++ b/docs/rust/opendal/layers/struct.PrometheusLayer.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Add prometheus for every operations."><title>PrometheusLayer in opendal::layers - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin  [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Add prometheus for every operations."><title>PrometheusLayer in opendal::layers - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin  [...]
 <h2 id="examples"><a href="#examples">Examples</a></h2>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>log::debug;
 <span class="kw">use </span>log::info;
@@ -40,8 +40,8 @@
     <span class="macro">println!</span>(<span class="string">&quot;{}&quot;</span>, String::from_utf8(buffer.clone()).unwrap());
     <span class="prelude-val">Ok</span>(())
 }</code></pre></div>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-PrometheusLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/prometheus.rs.html#94-99">source</a><a href="#impl-PrometheusLayer" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Prometheus [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-PrometheusLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/prometheus.rs.html#89">source</a><a href="#impl-Clone-for-PrometheusLayer" class="anchor">§</a><h3 cla [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-PrometheusLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/prometheus.rs.html#93-98">source</a><a href="#impl-PrometheusLayer" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Prometheus [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-PrometheusLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/prometheus.rs.html#88">source</a><a href="#impl-Clone-for-PrometheusLayer" class="anchor">§</a><h3 cla [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/layers/struct.RetryLayer.html b/docs/rust/opendal/layers/struct.RetryLayer.html
index acaafc9d..b84306aa 100644
--- a/docs/rust/opendal/layers/struct.RetryLayer.html
+++ b/docs/rust/opendal/layers/struct.RetryLayer.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Add retry for temporary failed operations."><title>RetryLayer in opendal::layers - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Add retry for temporary failed operations."><title>RetryLayer in opendal::layers - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin [...]
 <h2 id="notes"><a href="#notes">Notes</a></h2>
 <p>This layer will retry failed operations when <a href="../struct.Error.html#method.is_temporary" title="method opendal::Error::is_temporary"><code>Error::is_temporary</code></a>
 returns true. If operation still failed, this layer will set error to
@@ -15,7 +15,7 @@ returns true. If operation still failed, this layer will set error to
     .expect(<span class="string">&quot;must init&quot;</span>)
     .layer(RetryLayer::new())
     .finish();</code></pre></div>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-RetryLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/retry.rs.html#72-131">source</a><a href="#impl-RetryLayer" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.RetryLayer.html" title=" [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-RetryLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/retry.rs.html#71-130">source</a><a href="#impl-RetryLayer" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.RetryLayer.html" title=" [...]
 <h5 id="examples-1"><a href="#examples-1">Examples</a></h5>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>anyhow::Result;
 <span class="kw">use </span>opendal::layers::RetryLayer;
@@ -26,18 +26,18 @@ returns true. If operation still failed, this layer will set error to
 <span class="kw">let _ </span>= Operator::new(services::Memory::default())
     .expect(<span class="string">&quot;must init&quot;</span>)
     .layer(RetryLayer::new());</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.with_jitter" class="method"><a class="srclink rightside" href="../../src/opendal/layers/retry.rs.html#95-98">source</a><h4 class="code-header">pub fn <a href="#method.with_jitter" class="fn">with_jitter</a>(self) -&gt; Self</h4></section></summary><div class="docblock"><p>Set jitter of current backoff.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_jitter" class="method"><a class="srclink rightside" href="../../src/opendal/layers/retry.rs.html#94-97">source</a><h4 class="code-header">pub fn <a href="#method.with_jitter" class="fn">with_jitter</a>(self) -&gt; Self</h4></section></summary><div class="docblock"><p>Set jitter of current backoff.</p>
 <p>If jitter is enabled, ExponentialBackoff will add a random jitter in `[0, min_delay)
 to current delay.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.with_factor" class="method"><a class="srclink rightside" href="../../src/opendal/layers/retry.rs.html#105-108">source</a><h4 class="code-header">pub fn <a href="#method.with_factor" class="fn">with_factor</a>(self, factor: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.f32.html">f32</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set factor of current backoff.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_factor" class="method"><a class="srclink rightside" href="../../src/opendal/layers/retry.rs.html#104-107">source</a><h4 class="code-header">pub fn <a href="#method.with_factor" class="fn">with_factor</a>(self, factor: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.f32.html">f32</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set factor of current backoff.</p>
 <h5 id="panics"><a href="#panics">Panics</a></h5>
 <p>This function will panic if input factor smaller than <code>1.0</code>.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.with_min_delay" class="method"><a class="srclink rightside" href="../../src/opendal/layers/retry.rs.html#111-114">source</a><h4 class="code-header">pub fn <a href="#method.with_min_delay" class="fn">with_min_delay</a>(self, min_delay: <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>) -&gt; Self</h4></section></sum [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.with_max_delay" class="method"><a class="srclink rightside" href="../../src/opendal/layers/retry.rs.html#119-122">source</a><h4 class="code-header">pub fn <a href="#method.with_max_delay" class="fn">with_max_delay</a>(self, max_delay: <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>) -&gt; Self</h4></section></sum [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_min_delay" class="method"><a class="srclink rightside" href="../../src/opendal/layers/retry.rs.html#110-113">source</a><h4 class="code-header">pub fn <a href="#method.with_min_delay" class="fn">with_min_delay</a>(self, min_delay: <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>) -&gt; Self</h4></section></sum [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_max_delay" class="method"><a class="srclink rightside" href="../../src/opendal/layers/retry.rs.html#118-121">source</a><h4 class="code-header">pub fn <a href="#method.with_max_delay" class="fn">with_max_delay</a>(self, max_delay: <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>) -&gt; Self</h4></section></sum [...]
 <p>Delay will not increasing if current delay is larger than max_delay.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.with_max_times" class="method"><a class="srclink rightside" href="../../src/opendal/layers/retry.rs.html#127-130">source</a><h4 class="code-header">pub fn <a href="#method.with_max_times" class="fn">with_max_times</a>(self, max_times: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.usize.html">usize</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set max_time [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_max_times" class="method"><a class="srclink rightside" href="../../src/opendal/layers/retry.rs.html#126-129">source</a><h4 class="code-header">pub fn <a href="#method.with_max_times" class="fn">with_max_times</a>(self, max_times: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.usize.html">usize</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set max_time [...]
 <p>Backoff will return <code>None</code> if max times is reaching.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-RetryLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/retry.rs.html#69">source</a><a href="#impl-Clone-for-RetryLayer" class="anchor">§</a><h3 class="code-header [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-RetryLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/retry.rs.html#68">source</a><a href="#impl-Clone-for-RetryLayer" class="anchor">§</a><h3 class="code-header [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/layers/struct.TracingLayer.html b/docs/rust/opendal/layers/struct.TracingLayer.html
index 8dce9fee..ab4e64e9 100644
--- a/docs/rust/opendal/layers/struct.TracingLayer.html
+++ b/docs/rust/opendal/layers/struct.TracingLayer.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Add tracing for every operations."><title>TracingLayer in opendal::layers - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href=" [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Add tracing for every operations."><title>TracingLayer in opendal::layers - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href=" [...]
 <h2 id="examples"><a href="#examples">Examples</a></h2><h3 id="basic-setup"><a href="#basic-setup">Basic Setup</a></h3>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>anyhow::Result;
 <span class="kw">use </span>opendal::layers::TracingLayer;
@@ -68,7 +68,7 @@
 tracing::subscriber::set_global_default(my_subscriber)
     .expect(<span class="string">&quot;setting tracing default failed&quot;</span>);</code></pre></div>
 <p>For real-world usage, please take a look at <a href="https://crates.io/crates/tracing-opentelemetry"><code>tracing-opentelemetry</code></a>.</p>
-</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Layer%3CA%3E-for-TracingLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/tracing.rs.html#121-127">source</a><a href="#impl-Layer%3CA%3E-for-TracingLayer" class="anchor">§</a><h3 class="code-hea [...]
+</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Layer%3CA%3E-for-TracingLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/tracing.rs.html#120-126">source</a><a href="#impl-Layer%3CA%3E-for-TracingLayer" class="anchor">§</a><h3 class="code-hea [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/operator_functions/index.html b/docs/rust/opendal/operator_functions/index.html
index f013aec3..6f3a2af2 100644
--- a/docs/rust/opendal/operator_functions/index.html
+++ b/docs/rust/opendal/operator_functions/index.html
@@ -1,3 +1,3 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Functions provides the functions generated by `BlockingOperator`"><title>opendal::operator_functions - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="fon [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Functions provides the functions generated by `BlockingOperator`"><title>opendal::operator_functions - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="fon [...]
 <p>By using functions, users can add more options for operation.</p>
 </div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><ul class="item-table"><li><div class="item-name"><a class="struct" href="struct.FunctionWrite.html" title="struct opendal::operator_functions::FunctionWrite">FunctionWrite</a></div><div class="desc docblock-short">Function that generated by <a href="../struct.BlockingOperator.html#method.write_with" title="method opendal::BlockingOperator::write_with"><code>BlockingOperator::write_with</code [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/operator_functions/struct.FunctionWrite.html b/docs/rust/opendal/operator_functions/struct.FunctionWrite.html
index c9f94996..a94e4db6 100644
--- a/docs/rust/opendal/operator_functions/struct.FunctionWrite.html
+++ b/docs/rust/opendal/operator_functions/struct.FunctionWrite.html
@@ -1,8 +1,8 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Function that generated by `BlockingOperator::write_with`."><title>FunctionWrite in opendal::operator_functions - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Function that generated by `BlockingOperator::write_with`."><title>FunctionWrite in opendal::operator_functions - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font [...]
 <p>Users can add more options by public functions provided by this struct.</p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-FunctionWrite" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_functions.rs.html#76-98">source</a><a href="#impl-FunctionWrite" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struc [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.content_type" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_functions.rs.html#86-91">source</a><h4 class="code-header">pub fn <a href="#method.content_type" class="fn">content_type</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set th [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.call" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_functions.rs.html#95-97">source</a><h4 class="code-header">pub fn <a href="#method.call" class="fn">call</a>(self) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.unit.html">()</a>&gt;</h4 [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-FunctionWrite" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_functions.rs.html#75-97">source</a><a href="#impl-FunctionWrite" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struc [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.content_type" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_functions.rs.html#85-90">source</a><h4 class="code-header">pub fn <a href="#method.content_type" class="fn">content_type</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set th [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.call" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_functions.rs.html#94-96">source</a><h4 class="code-header">pub fn <a href="#method.call" class="fn">call</a>(self) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.unit.html">()</a>&gt;</h4 [...]
 result.</p>
 </div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-FunctionWrite" class="impl"><a href="#impl-RefUnwindSafe-for-FunctionWrite" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.RefUnwindSafe. [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
diff --git a/docs/rust/opendal/operator_futures/index.html b/docs/rust/opendal/operator_futures/index.html
index 689a58e5..78bcd79c 100644
--- a/docs/rust/opendal/operator_futures/index.html
+++ b/docs/rust/opendal/operator_futures/index.html
@@ -1,3 +1,3 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Futures provides the futures generated by `Operator`"><title>opendal::operator_futures - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" cross [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Futures provides the futures generated by `Operator`"><title>opendal::operator_futures - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" cross [...]
 <p>By using futures, users can add more options for operation.</p>
 </div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><ul class="item-table"><li><div class="item-name"><a class="struct" href="struct.FutureAppend.html" title="struct opendal::operator_futures::FutureAppend">FutureAppend</a></div><div class="desc docblock-short">Future that generated by <a href="../struct.Operator.html#method.append_with" title="method opendal::Operator::append_with"><code>Operator::append_with</code></a>.</div></li><li><div cl [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/operator_futures/struct.FutureAppend.html b/docs/rust/opendal/operator_futures/struct.FutureAppend.html
index e3ee2502..be294976 100644
--- a/docs/rust/opendal/operator_futures/struct.FutureAppend.html
+++ b/docs/rust/opendal/operator_futures/struct.FutureAppend.html
@@ -1,9 +1,9 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Future that generated by `Operator::append_with`."><title>FutureAppend in opendal::operator_futures - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Future that generated by `Operator::append_with`."><title>FutureAppend in opendal::operator_futures - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font [...]
 <p>Users can add more options by public functions provided by this struct.</p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-FutureAppend" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#148-172">source</a><a href="#impl-FutureAppend" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct. [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.content_disposition" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#158-163">source</a><h4 class="code-header">pub fn <a href="#method.content_disposition" class="fn">content_disposition</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.cache_control" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#166-171">source</a><h4 class="code-header">pub fn <a href="#method.cache_control" class="fn">cache_control</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Future-for-FutureAppend" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#174-180">source</a><a href="#impl-Future-for-FutureAppend" class="ancho [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-FutureAppend" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#147-171">source</a><a href="#impl-FutureAppend" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct. [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.content_disposition" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#157-162">source</a><h4 class="code-header">pub fn <a href="#method.content_disposition" class="fn">content_disposition</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.cache_control" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#165-170">source</a><h4 class="code-header">pub fn <a href="#method.cache_control" class="fn">cache_control</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Future-for-FutureAppend" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#173-179">source</a><a href="#impl-Future-for-FutureAppend" class="ancho [...]
 the current task for wakeup if the value is not yet available. <a href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html#tymethod.poll">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-FutureAppend" class="impl"><a href="#impl-RefUnwindSafe [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
diff --git a/docs/rust/opendal/operator_futures/struct.FutureAppender.html b/docs/rust/opendal/operator_futures/struct.FutureAppender.html
index 671c34b1..2408d6c8 100644
--- a/docs/rust/opendal/operator_futures/struct.FutureAppender.html
+++ b/docs/rust/opendal/operator_futures/struct.FutureAppender.html
@@ -1,9 +1,9 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Future that generated by [`Operation.appender_with`]."><title>FutureAppender in opendal::operator_futures - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Future that generated by [`Operation.appender_with`]."><title>FutureAppender in opendal::operator_futures - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type [...]
 <p>Users can add more options by public functions provided by this struct.</p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-FutureAppender" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#187-209">source</a><a href="#impl-FutureAppender" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="str [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.content_disposition" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#195-200">source</a><h4 class="code-header">pub fn <a href="#method.content_disposition" class="fn">content_disposition</a>(self, content_disposition: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></ [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.cache_control" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#203-208">source</a><h4 class="code-header">pub fn <a href="#method.cache_control" class="fn">cache_control</a>(self, cache_control: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docb [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Future-for-FutureAppender" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#211-217">source</a><a href="#impl-Future-for-FutureAppender" class="a [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-FutureAppender" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#186-208">source</a><a href="#impl-FutureAppender" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="str [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.content_disposition" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#194-199">source</a><h4 class="code-header">pub fn <a href="#method.content_disposition" class="fn">content_disposition</a>(self, content_disposition: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></ [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.cache_control" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#202-207">source</a><h4 class="code-header">pub fn <a href="#method.cache_control" class="fn">cache_control</a>(self, cache_control: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docb [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Future-for-FutureAppender" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#210-216">source</a><a href="#impl-Future-for-FutureAppender" class="a [...]
 the current task for wakeup if the value is not yet available. <a href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html#tymethod.poll">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-FutureAppender" class="impl"><a href="#impl-RefUnwindSa [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
diff --git a/docs/rust/opendal/operator_futures/struct.FutureList.html b/docs/rust/opendal/operator_futures/struct.FutureList.html
index 321b905e..78fa0844 100644
--- a/docs/rust/opendal/operator_futures/struct.FutureList.html
+++ b/docs/rust/opendal/operator_futures/struct.FutureList.html
@@ -1,9 +1,9 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Future that generated by `Operator::list_with`."><title>FutureList in opendal::operator_futures - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/wof [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Future that generated by `Operator::list_with`."><title>FutureList in opendal::operator_futures - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/wof [...]
 <p>Users can add more options by public functions provided by this struct.</p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-FutureList" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#518-536">source</a><a href="#impl-FutureList" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Futu [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.start_after" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#526-529">source</a><h4 class="code-header">pub fn <a href="#method.start_after" class="fn">start_after</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Change th [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.delimiter" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#532-535">source</a><h4 class="code-header">pub fn <a href="#method.delimiter" class="fn">delimiter</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Change the deli [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Future-for-FutureList" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#538-544">source</a><a href="#impl-Future-for-FutureList" class="anchor">§ [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-FutureList" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#514-532">source</a><a href="#impl-FutureList" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Futu [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.start_after" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#522-525">source</a><h4 class="code-header">pub fn <a href="#method.start_after" class="fn">start_after</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Change th [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.delimiter" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#528-531">source</a><h4 class="code-header">pub fn <a href="#method.delimiter" class="fn">delimiter</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Change the deli [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Future-for-FutureList" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#534-540">source</a><a href="#impl-Future-for-FutureList" class="anchor">§ [...]
 the current task for wakeup if the value is not yet available. <a href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html#tymethod.poll">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-FutureList" class="impl"><a href="#impl-RefUnwindSafe-f [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
diff --git a/docs/rust/opendal/operator_futures/struct.FuturePresignRead.html b/docs/rust/opendal/operator_futures/struct.FuturePresignRead.html
index d4cd32b9..95a3c28e 100644
--- a/docs/rust/opendal/operator_futures/struct.FuturePresignRead.html
+++ b/docs/rust/opendal/operator_futures/struct.FuturePresignRead.html
@@ -1,11 +1,11 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Future that generated by `Operator::presign_read_with`."><title>FuturePresignRead in opendal::operator_futures - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Future that generated by `Operator::presign_read_with`."><title>FuturePresignRead in opendal::operator_futures - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" [...]
 <p>Users can add more options by public functions provided by this struct.</p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-FuturePresignRead" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#224-260">source</a><a href="#impl-FuturePresignRead" class="anchor">§</a><h3 class="code-header">impl <a class="struct" hre [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.override_content_disposition" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#232-237">source</a><h4 class="code-header">pub fn <a href="#method.override_content_disposition" class="fn">override_content_disposition</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></s [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.override_cache_control" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#240-245">source</a><h4 class="code-header">pub fn <a href="#method.override_cache_control" class="fn">override_cache_control</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary>< [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.if_match" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#248-251">source</a><h4 class="code-header">pub fn <a href="#method.if_match" class="fn">if_match</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set the If-Match o [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.if_none_match" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#254-259">source</a><h4 class="code-header">pub fn <a href="#method.if_none_match" class="fn">if_none_match</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Future-for-FuturePresignRead" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#262-268">source</a><a href="#impl-Future-for-FuturePresignRead" cl [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-FuturePresignRead" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#223-259">source</a><a href="#impl-FuturePresignRead" class="anchor">§</a><h3 class="code-header">impl <a class="struct" hre [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.override_content_disposition" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#231-236">source</a><h4 class="code-header">pub fn <a href="#method.override_content_disposition" class="fn">override_content_disposition</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></s [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.override_cache_control" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#239-244">source</a><h4 class="code-header">pub fn <a href="#method.override_cache_control" class="fn">override_cache_control</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary>< [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.if_match" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#247-250">source</a><h4 class="code-header">pub fn <a href="#method.if_match" class="fn">if_match</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set the If-Match o [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.if_none_match" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#253-258">source</a><h4 class="code-header">pub fn <a href="#method.if_none_match" class="fn">if_none_match</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Future-for-FuturePresignRead" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#261-267">source</a><a href="#impl-Future-for-FuturePresignRead" cl [...]
 the current task for wakeup if the value is not yet available. <a href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html#tymethod.poll">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-FuturePresignRead" class="impl"><a href="#impl-RefUnwin [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
diff --git a/docs/rust/opendal/operator_futures/struct.FuturePresignWrite.html b/docs/rust/opendal/operator_futures/struct.FuturePresignWrite.html
index 20c5fce8..8a9c464f 100644
--- a/docs/rust/opendal/operator_futures/struct.FuturePresignWrite.html
+++ b/docs/rust/opendal/operator_futures/struct.FuturePresignWrite.html
@@ -1,12 +1,12 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Future that generated by `Operator::presign_read_with`."><title>FuturePresignWrite in opendal::operator_futures - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Future that generated by `Operator::presign_read_with`."><title>FuturePresignWrite in opendal::operator_futures - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font [...]
 <p>Users can add more options by public functions provided by this struct.</p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-FuturePresignWrite" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#275-311">source</a><a href="#impl-FuturePresignWrite" class="anchor">§</a><h3 class="code-header">impl <a class="struct" h [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-FuturePresignWrite" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#274-309">source</a><a href="#impl-FuturePresignWrite" class="anchor">§</a><h3 class="code-header">impl <a class="struct" h [...]
 <p>If the content length is not set, the content length will be
 calculated automatically by buffering part of data.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.content_type" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#289-294">source</a><h4 class="code-header">pub fn <a href="#method.content_type" class="fn">content_type</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set th [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.content_disposition" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#297-302">source</a><h4 class="code-header">pub fn <a href="#method.content_disposition" class="fn">content_disposition</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.cache_control" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#305-310">source</a><h4 class="code-header">pub fn <a href="#method.cache_control" class="fn">cache_control</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Future-for-FuturePresignWrite" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#313-319">source</a><a href="#impl-Future-for-FuturePresignWrite"  [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.content_type" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#287-292">source</a><h4 class="code-header">pub fn <a href="#method.content_type" class="fn">content_type</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set th [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.content_disposition" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#295-300">source</a><h4 class="code-header">pub fn <a href="#method.content_disposition" class="fn">content_disposition</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.cache_control" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#303-308">source</a><h4 class="code-header">pub fn <a href="#method.cache_control" class="fn">cache_control</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Future-for-FuturePresignWrite" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#311-317">source</a><a href="#impl-Future-for-FuturePresignWrite"  [...]
 the current task for wakeup if the value is not yet available. <a href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html#tymethod.poll">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-FuturePresignWrite" class="impl"><a href="#impl-RefUnwi [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
diff --git a/docs/rust/opendal/operator_futures/struct.FutureRead.html b/docs/rust/opendal/operator_futures/struct.FutureRead.html
index f13ff6b4..fe1ec639 100644
--- a/docs/rust/opendal/operator_futures/struct.FutureRead.html
+++ b/docs/rust/opendal/operator_futures/struct.FutureRead.html
@@ -1,11 +1,11 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Future that generated by `Operator::read_with`."><title>FutureRead in opendal::operator_futures - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/wof [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Future that generated by `Operator::read_with`."><title>FutureRead in opendal::operator_futures - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/wof [...]
 <p>Users can add more options by public functions provided by this struct.</p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-FutureRead" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#326-360">source</a><a href="#impl-FutureRead" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Futu [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.override_content_disposition" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#334-339">source</a><h4 class="code-header">pub fn <a href="#method.override_content_disposition" class="fn">override_content_disposition</a>(self, content_disposition: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>)  [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.override_cache_control" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#342-347">source</a><h4 class="code-header">pub fn <a href="#method.override_cache_control" class="fn">override_cache_control</a>(self, cache_control: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.if_match" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#350-353">source</a><h4 class="code-header">pub fn <a href="#method.if_match" class="fn">if_match</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set the If-Match f [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.if_none_match" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#356-359">source</a><h4 class="code-header">pub fn <a href="#method.if_none_match" class="fn">if_none_match</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Future-for-FutureRead" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#362-368">source</a><a href="#impl-Future-for-FutureRead" class="anchor">§ [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-FutureRead" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#324-358">source</a><a href="#impl-FutureRead" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Futu [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.override_content_disposition" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#332-337">source</a><h4 class="code-header">pub fn <a href="#method.override_content_disposition" class="fn">override_content_disposition</a>(self, content_disposition: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>)  [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.override_cache_control" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#340-345">source</a><h4 class="code-header">pub fn <a href="#method.override_cache_control" class="fn">override_cache_control</a>(self, cache_control: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.if_match" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#348-351">source</a><h4 class="code-header">pub fn <a href="#method.if_match" class="fn">if_match</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set the If-Match f [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.if_none_match" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#354-357">source</a><h4 class="code-header">pub fn <a href="#method.if_none_match" class="fn">if_none_match</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Future-for-FutureRead" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#360-366">source</a><a href="#impl-Future-for-FutureRead" class="anchor">§ [...]
 the current task for wakeup if the value is not yet available. <a href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html#tymethod.poll">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-FutureRead" class="impl"><a href="#impl-RefUnwindSafe-f [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
diff --git a/docs/rust/opendal/operator_futures/struct.FutureReader.html b/docs/rust/opendal/operator_futures/struct.FutureReader.html
index ab8ec887..921b3f77 100644
--- a/docs/rust/opendal/operator_futures/struct.FutureReader.html
+++ b/docs/rust/opendal/operator_futures/struct.FutureReader.html
@@ -1,11 +1,11 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Future that generated by `Operator::reader_with`."><title>FutureReader in opendal::operator_futures - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Future that generated by `Operator::reader_with`."><title>FutureReader in opendal::operator_futures - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font [...]
 <p>Users can add more options by public functions provided by this struct.</p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-FutureReader" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#375-409">source</a><a href="#impl-FutureReader" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct. [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.override_content_disposition" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#383-388">source</a><h4 class="code-header">pub fn <a href="#method.override_content_disposition" class="fn">override_content_disposition</a>(self, content_disposition: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>)  [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.override_cache_control" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#391-396">source</a><h4 class="code-header">pub fn <a href="#method.override_cache_control" class="fn">override_cache_control</a>(self, cache_control: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.if_match" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#399-402">source</a><h4 class="code-header">pub fn <a href="#method.if_match" class="fn">if_match</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set the If-Match f [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.if_none_match" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#405-408">source</a><h4 class="code-header">pub fn <a href="#method.if_none_match" class="fn">if_none_match</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Future-for-FutureReader" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#411-417">source</a><a href="#impl-Future-for-FutureReader" class="ancho [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-FutureReader" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#373-407">source</a><a href="#impl-FutureReader" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct. [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.override_content_disposition" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#381-386">source</a><h4 class="code-header">pub fn <a href="#method.override_content_disposition" class="fn">override_content_disposition</a>(self, content_disposition: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>)  [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.override_cache_control" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#389-394">source</a><h4 class="code-header">pub fn <a href="#method.override_cache_control" class="fn">override_cache_control</a>(self, cache_control: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.if_match" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#397-400">source</a><h4 class="code-header">pub fn <a href="#method.if_match" class="fn">if_match</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set the If-Match f [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.if_none_match" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#403-406">source</a><h4 class="code-header">pub fn <a href="#method.if_none_match" class="fn">if_none_match</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Future-for-FutureReader" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#409-415">source</a><a href="#impl-Future-for-FutureReader" class="ancho [...]
 the current task for wakeup if the value is not yet available. <a href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html#tymethod.poll">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-FutureReader" class="impl"><a href="#impl-RefUnwindSafe [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
diff --git a/docs/rust/opendal/operator_futures/struct.FutureStat.html b/docs/rust/opendal/operator_futures/struct.FutureStat.html
index 36095bfc..3f4241b3 100644
--- a/docs/rust/opendal/operator_futures/struct.FutureStat.html
+++ b/docs/rust/opendal/operator_futures/struct.FutureStat.html
@@ -1,8 +1,8 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Future that generated by `Operator::stat_with`."><title>FutureStat in opendal::operator_futures - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/wof [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Future that generated by `Operator::stat_with`."><title>FutureStat in opendal::operator_futures - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/wof [...]
 <p>Users can add more options by public functions provided by this struct.</p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-FutureStat" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#121-133">source</a><a href="#impl-FutureStat" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Futu [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.if_none_match" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#129-132">source</a><h4 class="code-header">pub fn <a href="#method.if_none_match" class="fn">if_none_match</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Future-for-FutureStat" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#135-141">source</a><a href="#impl-Future-for-FutureStat" class="anchor">§ [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-FutureStat" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#120-132">source</a><a href="#impl-FutureStat" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Futu [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.if_none_match" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#128-131">source</a><h4 class="code-header">pub fn <a href="#method.if_none_match" class="fn">if_none_match</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Future-for-FutureStat" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#134-140">source</a><a href="#impl-Future-for-FutureStat" class="anchor">§ [...]
 the current task for wakeup if the value is not yet available. <a href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html#tymethod.poll">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-FutureStat" class="impl"><a href="#impl-RefUnwindSafe-f [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
diff --git a/docs/rust/opendal/operator_futures/struct.FutureWrite.html b/docs/rust/opendal/operator_futures/struct.FutureWrite.html
index 308aa6e8..3114708d 100644
--- a/docs/rust/opendal/operator_futures/struct.FutureWrite.html
+++ b/docs/rust/opendal/operator_futures/struct.FutureWrite.html
@@ -1,12 +1,12 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Future that generated by `Operator::write_with`."><title>FutureWrite in opendal::operator_futures - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/w [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Future that generated by `Operator::write_with`."><title>FutureWrite in opendal::operator_futures - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/w [...]
 <p>Users can add more options by public functions provided by this struct.</p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-FutureWrite" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#424-460">source</a><a href="#impl-FutureWrite" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Fu [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-FutureWrite" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#422-457">source</a><a href="#impl-FutureWrite" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Fu [...]
 <p>If the content length is not set, the content length will be
 calculated automatically by buffering part of data.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.content_type" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#438-443">source</a><h4 class="code-header">pub fn <a href="#method.content_type" class="fn">content_type</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set th [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.content_disposition" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#446-451">source</a><h4 class="code-header">pub fn <a href="#method.content_disposition" class="fn">content_disposition</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.cache_control" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#454-459">source</a><h4 class="code-header">pub fn <a href="#method.cache_control" class="fn">cache_control</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Future-for-FutureWrite" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#462-468">source</a><a href="#impl-Future-for-FutureWrite" class="anchor" [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.content_type" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#435-440">source</a><h4 class="code-header">pub fn <a href="#method.content_type" class="fn">content_type</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set th [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.content_disposition" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#443-448">source</a><h4 class="code-header">pub fn <a href="#method.content_disposition" class="fn">content_disposition</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.cache_control" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#451-456">source</a><h4 class="code-header">pub fn <a href="#method.cache_control" class="fn">cache_control</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Future-for-FutureWrite" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#459-465">source</a><a href="#impl-Future-for-FutureWrite" class="anchor" [...]
 the current task for wakeup if the value is not yet available. <a href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html#tymethod.poll">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-FutureWrite" class="impl"><a href="#impl-RefUnwindSafe- [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
diff --git a/docs/rust/opendal/operator_futures/struct.FutureWriter.html b/docs/rust/opendal/operator_futures/struct.FutureWriter.html
index ab024ae1..9f3984f6 100644
--- a/docs/rust/opendal/operator_futures/struct.FutureWriter.html
+++ b/docs/rust/opendal/operator_futures/struct.FutureWriter.html
@@ -1,12 +1,12 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Future that generated by `Operator::writer_with`."><title>FutureWriter in opendal::operator_futures - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Future that generated by `Operator::writer_with`."><title>FutureWriter in opendal::operator_futures - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font [...]
 <p>Users can add more options by public functions provided by this struct.</p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-FutureWriter" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#475-503">source</a><a href="#impl-FutureWriter" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct. [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-FutureWriter" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#472-499">source</a><a href="#impl-FutureWriter" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct. [...]
 <p>If the content length is not set, the content length will be
 calculated automatically by buffering part of data.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.content_type" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#487-490">source</a><h4 class="code-header">pub fn <a href="#method.content_type" class="fn">content_type</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set th [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.content_disposition" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#493-496">source</a><h4 class="code-header">pub fn <a href="#method.content_disposition" class="fn">content_disposition</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.cache_control" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#499-502">source</a><h4 class="code-header">pub fn <a href="#method.cache_control" class="fn">cache_control</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Future-for-FutureWriter" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#505-511">source</a><a href="#impl-Future-for-FutureWriter" class="ancho [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.content_type" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#483-486">source</a><h4 class="code-header">pub fn <a href="#method.content_type" class="fn">content_type</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set th [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.content_disposition" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#489-492">source</a><h4 class="code-header">pub fn <a href="#method.content_disposition" class="fn">content_disposition</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.cache_control" class="method"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#495-498">source</a><h4 class="code-header">pub fn <a href="#method.cache_control" class="fn">cache_control</a>(self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Future-for-FutureWriter" class="impl"><a class="srclink rightside" href="../../src/opendal/types/operator/operator_futures.rs.html#501-507">source</a><a href="#impl-Future-for-FutureWriter" class="ancho [...]
 the current task for wakeup if the value is not yet available. <a href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html#tymethod.poll">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-FutureWriter" class="impl"><a href="#impl-RefUnwindSafe [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
diff --git a/docs/rust/opendal/ops/index.html b/docs/rust/opendal/ops/index.html
deleted file mode 100644
index ad8ab3c1..00000000
--- a/docs/rust/opendal/ops/index.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Ops provides the operation args struct like `OpRead` for user."><title>opendal::ops - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossori [...]
-<p>By using ops, users can add more context for operation.</p>
-</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><ul class="item-table"><li><div class="item-name"><a class="struct" href="struct.OpAppend.html" title="struct opendal::ops::OpAppend">OpAppend</a></div><div class="desc docblock-short">Args for <code>append</code> operation.</div></li><li><div class="item-name"><a class="struct" href="struct.OpBatch.html" title="struct opendal::ops::OpBatch">OpBatch</a></div><div class="desc docblock-short">A [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/ops/sidebar-items.js b/docs/rust/opendal/ops/sidebar-items.js
deleted file mode 100644
index 7689faf3..00000000
--- a/docs/rust/opendal/ops/sidebar-items.js
+++ /dev/null
@@ -1 +0,0 @@
-window.SIDEBAR_ITEMS = {"enum":["BatchOperation","PresignOperation"],"struct":["OpAppend","OpBatch","OpCopy","OpCreateDir","OpDelete","OpList","OpPresign","OpRead","OpRename","OpStat","OpWrite"]};
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/adapters/kv/struct.Backend.html b/docs/rust/opendal/raw/adapters/kv/struct.Backend.html
index e009b638..2f08d57f 100644
--- a/docs/rust/opendal/raw/adapters/kv/struct.Backend.html
+++ b/docs/rust/opendal/raw/adapters/kv/struct.Backend.html
@@ -1,109 +1,109 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Backend of kv service. If the storage service is one k-v-like service, it should implement this kv `Backend` by right."><title>Backend in opendal::raw::adapters::kv - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Regul [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Backend of kv service. If the storage service is one k-v-like service, it should implement this kv `Backend` by right."><title>Backend in opendal::raw::adapters::kv - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Regul [...]
 <p><code>Backend</code> implements one general logic on how to read, write, scan the data from one kv store efficiently.
 And the <a href="trait.Adapter.html" title="trait opendal::raw::adapters::kv::Adapter"><code>Adapter</code></a> held by <code>Backend</code> will handle how to communicate with one k-v-like service really and provides
 a series of basic operation for this service.</p>
 <p>OpenDAL developer can implement one new k-v store backend easily with help of this Backend.</p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Backend%3CS%3E" class="impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#41-58">source</a><a href="#impl-Backend%3CS%3E" class="anchor">§</a><h3 class="code-header">impl&lt;S&gt; <a class="struct" href [...]
-    S: <a class="trait" href="trait.Adapter.html" title="trait opendal::raw::adapters::kv::Adapter">Adapter</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.new" class="method"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#46-51">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(kv: S) -&gt; Self</h4></section></summary><div class [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.with_root" class="method"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#54-57">source</a><h4 class="code-header">pub fn <a href="#method.with_root" class="fn">with_root</a>(self, root: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Configure root w [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Accessor-for-Backend%3CS%3E" class="impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#61-234">source</a><a href="#impl-Accessor-for-Backend%3CS%3E" class=" [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Backend%3CS%3E" class="impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#40-57">source</a><a href="#impl-Backend%3CS%3E" class="anchor">§</a><h3 class="code-header">impl&lt;S&gt; <a class="struct" href [...]
+    S: <a class="trait" href="trait.Adapter.html" title="trait opendal::raw::adapters::kv::Adapter">Adapter</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.new" class="method"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#45-50">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(kv: S) -&gt; Self</h4></section></summary><div class [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_root" class="method"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#53-56">source</a><h4 class="code-header">pub fn <a href="#method.with_root" class="fn">with_root</a>(self, root: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Configure root w [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Accessor-for-Backend%3CS%3E" class="impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#60-233">source</a><a href="#impl-Accessor-for-Backend%3CS%3E" class=" [...]
 <code>blocking_read</code> operation.</div></details><details class="toggle" open><summary><section id="associatedtype.Writer" class="associatedtype trait-impl"><a href="#associatedtype.Writer" class="anchor">§</a><h4 class="code-header">type <a href="../../trait.Accessor.html#associatedtype.Writer" class="associatedtype">Writer</a> = KvWriter&lt;S&gt;</h4></section></summary><div class='docblock'>Writer is the associated writer the could return in <code>write</code> operation.</div></de [...]
 <code>blocking_write</code> operation.</div></details><details class="toggle" open><summary><section id="associatedtype.Appender" class="associatedtype trait-impl"><a href="#associatedtype.Appender" class="anchor">§</a><h4 class="code-header">type <a href="../../trait.Accessor.html#associatedtype.Appender" class="associatedtype">Appender</a> = <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.unit.html">()</a></h4></section></summary><div class='docblock'>Appender [...]
-<code>blocking_list</code> operation.</div></details><details class="toggle method-toggle" open><summary><section id="method.info" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#70-92">source</a><a href="#method.info" class="anchor">§</a><h4 class="code-header">fn <a href="../../trait.Accessor.html#tymethod.info" class="fn">info</a>(&amp;self) -&gt; <a class="struct" href="../../struct.AccessorInfo.html" title="struct  [...]
+<code>blocking_list</code> operation.</div></details><details class="toggle method-toggle" open><summary><section id="method.info" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#69-91">source</a><a href="#method.info" class="anchor">§</a><h4 class="code-header">fn <a href="../../trait.Accessor.html#tymethod.info" class="fn">info</a>(&amp;self) -&gt; <a class="struct" href="../../struct.AccessorInfo.html" title="struct  [...]
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    __arg2: <a class="struct" href="../../../ops/struct.OpCreateDir.html" title="struct opendal::ops::OpCreateDir">OpCreateDir</a>
+    __arg2: <a class="struct" href="../../struct.OpCreateDir.html" title="struct opendal::raw::OpCreateDir">OpCreateDir</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../../type.Result.html" title="type opend [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>create</code> operation on the specified path <a href="../../trait.Accessor.html#method.create_dir">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_create_dir" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#100-105">source</a><a href="#method.blocking_create_dir"  [...]
+    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>create</code> operation on the specified path <a href="../../trait.Accessor.html#method.create_dir">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_create_dir" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#99-104">source</a><a href="#method.blocking_create_dir" c [...]
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../../../ops/struct.OpRead.html" title="struct opendal::ops::OpRead">OpRead</a>
+    args: <a class="struct" href="../../struct.OpRead.html" title="struct opendal::raw::OpRead">OpRead</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../../type.Result.html" title="type opend [...]
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>read</code> operation on the specified path, returns a
-<a href="../../../struct.Reader.html" title="struct opendal::Reader"><code>Reader</code></a> if operate successful. <a href="../../trait.Accessor.html#method.read">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_read" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#121-131">source</a><a href="#method.blocking_read" class="anchor">§</a><h4 class="code-header"> [...]
+<a href="../../../struct.Reader.html" title="struct opendal::Reader"><code>Reader</code></a> if operate successful. <a href="../../trait.Accessor.html#method.read">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_read" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#120-130">source</a><a href="#method.blocking_read" class="anchor">§</a><h4 class="code-header"> [...]
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../../../ops/struct.OpRead.html" title="struct opendal::ops::OpRead">OpRead</a>
-) -&gt; <a class="type" href="../../../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="../../struct.RpRead.html" title="struct opendal::raw::RpRead">RpRead</a>, Self::<a class="associatedtype" href="../../trait.Accessor.html#associatedtype.BlockingReader" title="type opendal::raw::Accessor::BlockingReader">BlockingReader</a>)&gt;</h4></section></summary><div class='docblock'>Invoke the <code>blocking_read</code> operation on the specified path. <a hr [...]
+    args: <a class="struct" href="../../struct.OpRead.html" title="struct opendal::raw::OpRead">OpRead</a>
+) -&gt; <a class="type" href="../../../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="../../struct.RpRead.html" title="struct opendal::raw::RpRead">RpRead</a>, Self::<a class="associatedtype" href="../../trait.Accessor.html#associatedtype.BlockingReader" title="type opendal::raw::Accessor::BlockingReader">BlockingReader</a>)&gt;</h4></section></summary><div class='docblock'>Invoke the <code>blocking_read</code> operation on the specified path. <a hr [...]
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../../../ops/struct.OpWrite.html" title="struct opendal::ops::OpWrite">OpWrite</a>
+    args: <a class="struct" href="../../struct.OpWrite.html" title="struct opendal::raw::OpWrite">OpWrite</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../../type.Result.html" title="type opend [...]
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>write</code> operation on the specified path, returns a
-written size if operate successful. <a href="../../trait.Accessor.html#method.write">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_write" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#146-157">source</a><a href="#method.blocking_write" class="anchor">§</a><h4 class="code-header">fn <a href="../../trait.Accessor.html#method.blocking_write" class="fn">block [...]
+written size if operate successful. <a href="../../trait.Accessor.html#method.write">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_write" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#145-156">source</a><a href="#method.blocking_write" class="anchor">§</a><h4 class="code-header">fn <a href="../../trait.Accessor.html#method.blocking_write" class="fn">block [...]
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../../../ops/struct.OpWrite.html" title="struct opendal::ops::OpWrite">OpWrite</a>
-) -&gt; <a class="type" href="../../../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="../../struct.RpWrite.html" title="struct opendal::raw::RpWrite">RpWrite</a>, Self::<a class="associatedtype" href="../../trait.Accessor.html#associatedtype.BlockingWriter" title="type opendal::raw::Accessor::BlockingWriter">BlockingWriter</a>)&gt;</h4></section></summary><div class='docblock'>Invoke the <code>blocking_write</code> operation on the specified path. < [...]
+    args: <a class="struct" href="../../struct.OpWrite.html" title="struct opendal::raw::OpWrite">OpWrite</a>
+) -&gt; <a class="type" href="../../../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="../../struct.RpWrite.html" title="struct opendal::raw::RpWrite">RpWrite</a>, Self::<a class="associatedtype" href="../../trait.Accessor.html#associatedtype.BlockingWriter" title="type opendal::raw::Accessor::BlockingWriter">BlockingWriter</a>)&gt;</h4></section></summary><div class='docblock'>Invoke the <code>blocking_write</code> operation on the specified path. < [...]
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    __arg2: <a class="struct" href="../../../ops/struct.OpStat.html" title="struct opendal::ops::OpStat">OpStat</a>
+    __arg2: <a class="struct" href="../../struct.OpStat.html" title="struct opendal::raw::OpStat">OpStat</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../../type.Result.html" title="type opend [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>stat</code> operation on the specified path. <a href="../../trait.Accessor.html#method.stat">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_stat" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#175-189">source</a><a href="#method.blocking_stat" class="anchor">§</a [...]
+    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>stat</code> operation on the specified path. <a href="../../trait.Accessor.html#method.stat">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_stat" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#174-188">source</a><a href="#method.blocking_stat" class="anchor">§</a [...]
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    __arg2: <a class="struct" href="../../../ops/struct.OpDelete.html" title="struct opendal::ops::OpDelete">OpDelete</a>
+    __arg2: <a class="struct" href="../../struct.OpDelete.html" title="struct opendal::raw::OpDelete">OpDelete</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../../type.Result.html" title="type opend [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>delete</code> operation on the specified path. <a href="../../trait.Accessor.html#method.delete">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_delete" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#198-203">source</a><a href="#method.blocking_delete" class="anch [...]
+    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>delete</code> operation on the specified path. <a href="../../trait.Accessor.html#method.delete">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_delete" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#197-202">source</a><a href="#method.blocking_delete" class="anch [...]
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../../../ops/struct.OpList.html" title="struct opendal::ops::OpList">OpList</a>
+    args: <a class="struct" href="../../struct.OpList.html" title="struct opendal::raw::OpList">OpList</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../../type.Result.html" title="type opend [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>list</code> operation on the specified path. <a href="../../trait.Accessor.html#method.list">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_list" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#220-233">source</a><a href="#method.blocking_list" class="anchor">§</a [...]
+    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>list</code> operation on the specified path. <a href="../../trait.Accessor.html#method.list">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_list" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/kv/backend.rs.html#219-232">source</a><a href="#method.blocking_list" class="anchor">§</a [...]
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../../../ops/struct.OpList.html" title="struct opendal::ops::OpList">OpList</a>
-) -&gt; <a class="type" href="../../../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="../../struct.RpList.html" title="struct opendal::raw::RpList">RpList</a>, Self::<a class="associatedtype" href="../../trait.Accessor.html#associatedtype.BlockingPager" title="type opendal::raw::Accessor::BlockingPager">BlockingPager</a>)&gt;</h4></section></summary><div class='docblock'>Invoke the <code>blocking_list</code> operation on the specified path. <a href= [...]
+    args: <a class="struct" href="../../struct.OpList.html" title="struct opendal::raw::OpList">OpList</a>
+) -&gt; <a class="type" href="../../../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="../../struct.RpList.html" title="struct opendal::raw::RpList">RpList</a>, Self::<a class="associatedtype" href="../../trait.Accessor.html#associatedtype.BlockingPager" title="type opendal::raw::Accessor::BlockingPager">BlockingPager</a>)&gt;</h4></section></summary><div class='docblock'>Invoke the <code>blocking_list</code> operation on the specified path. <a href= [...]
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../../../ops/struct.OpAppend.html" title="struct opendal::ops::OpAppend">OpAppend</a>
+    args: <a class="struct" href="../../struct.OpAppend.html" title="struct opendal::raw::OpAppend">OpAppend</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../../type.Result.html" title="type opend [...]
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>append</code> operation on the specified path, returns a
-appended size if operate successful. <a href="../../trait.Accessor.html#method.append">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.copy" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/accessor.rs.html#168-175">source</a><a href="#method.copy" class="anchor">§</a><h4 class="code-header">fn <a href="../../trait.Accessor.html#method.copy" class="fn">copy</a>&lt;'life0, 'life1, 'life2, 'async_t [...]
+appended size if operate successful. <a href="../../trait.Accessor.html#method.append">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.copy" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/accessor.rs.html#167-174">source</a><a href="#method.copy" class="anchor">§</a><h4 class="code-header">fn <a href="../../trait.Accessor.html#method.copy" class="fn">copy</a>&lt;'life0, 'life1, 'life2, 'async_t [...]
     &amp;'life0 self,
     from: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
     to: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../../../ops/struct.OpCopy.html" title="struct opendal::ops::OpCopy">OpCopy</a>
+    args: <a class="struct" href="../../struct.OpCopy.html" title="struct opendal::raw::OpCopy">OpCopy</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../../type.Result.html" title="type opend [...]
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,
-    'life2: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>copy</code> operation on the specified <code>from</code> path and <code>to</code> path. <a href="../../trait.Accessor.html#method.copy">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.rename" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/accessor.rs.html#180-187">source</a><a href="#method.rename" c [...]
+    'life2: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>copy</code> operation on the specified <code>from</code> path and <code>to</code> path. <a href="../../trait.Accessor.html#method.copy">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.rename" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/accessor.rs.html#179-186">source</a><a href="#method.rename" c [...]
     &amp;'life0 self,
     from: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
     to: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../../../ops/struct.OpRename.html" title="struct opendal::ops::OpRename">OpRename</a>
+    args: <a class="struct" href="../../struct.OpRename.html" title="struct opendal::raw::OpRename">OpRename</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../../type.Result.html" title="type opend [...]
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,
-    'life2: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>rename</code> operation on the specified <code>from</code> path and <code>to</code> path. <a href="../../trait.Accessor.html#method.rename">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.presign" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/accessor.rs.html#248-255">source</a><a href="#method.pres [...]
+    'life2: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>rename</code> operation on the specified <code>from</code> path and <code>to</code> path. <a href="../../trait.Accessor.html#method.rename">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.presign" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/accessor.rs.html#247-254">source</a><a href="#method.pres [...]
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../../../ops/struct.OpPresign.html" title="struct opendal::ops::OpPresign">OpPresign</a>
+    args: <a class="struct" href="../../struct.OpPresign.html" title="struct opendal::raw::OpPresign">OpPresign</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../../type.Result.html" title="type opend [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>presign</code> operation on the specified path. <a href="../../trait.Accessor.html#method.presign">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.batch" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/accessor.rs.html#260-267">source</a><a href="#method.batch" class="anchor">§</a><h4 class="code-head [...]
+    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>presign</code> operation on the specified path. <a href="../../trait.Accessor.html#method.presign">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.batch" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/accessor.rs.html#259-266">source</a><a href="#method.batch" class="anchor">§</a><h4 class="code-head [...]
     &amp;'life0 self,
-    args: <a class="struct" href="../../../ops/struct.OpBatch.html" title="struct opendal::ops::OpBatch">OpBatch</a>
+    args: <a class="struct" href="../../struct.OpBatch.html" title="struct opendal::raw::OpBatch">OpBatch</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../../type.Result.html" title="type opend [...]
     Self: 'async_trait,
-    'life0: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>batch</code> operations. <a href="../../trait.Accessor.html#method.batch">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_copy" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/accessor.rs.html#316-323">source</a><a href="#method.blocking_copy" class="anchor">§</a><h4 class="code-header">fn <a [...]
+    'life0: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>batch</code> operations. <a href="../../trait.Accessor.html#method.batch">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_copy" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/accessor.rs.html#315-322">source</a><a href="#method.blocking_copy" class="anchor">§</a><h4 class="code-header">fn <a [...]
     S: <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</span></h3></section><section id="impl-Send-for-Backend%3CS%3E" class="impl"><a href="#impl-Send-for-Backend%3CS%3E" class="anchor">§</a><h3 class="code-header">impl&lt;S&gt; <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for < [...]
     S: <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</span></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-Backend%3CS%3E" c [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
diff --git a/docs/rust/opendal/raw/adapters/typed_kv/struct.Backend.html b/docs/rust/opendal/raw/adapters/typed_kv/struct.Backend.html
index 5ab154b0..423b20f0 100644
--- a/docs/rust/opendal/raw/adapters/typed_kv/struct.Backend.html
+++ b/docs/rust/opendal/raw/adapters/typed_kv/struct.Backend.html
@@ -1,105 +1,105 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="The typed kv backend which implements Accessor for for typed kv adapter."><title>Backend in opendal::raw::adapters::typed_kv - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel [...]
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Backend%3CS%3E" class="impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#37-54">source</a><a href="#impl-Backend%3CS%3E" class="anchor">§</a><h3 class="code-header">impl&lt;S&gt; <a class="struct [...]
-    S: <a class="trait" href="trait.Adapter.html" title="trait opendal::raw::adapters::typed_kv::Adapter">Adapter</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.new" class="method"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#42-47">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(kv: S) -&gt; Self</h4></section></summar [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.with_root" class="method"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#50-53">source</a><h4 class="code-header">pub fn <a href="#method.with_root" class="fn">with_root</a>(self, root: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Configure  [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Accessor-for-Backend%3CS%3E" class="impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#57-223">source</a><a href="#impl-Accessor-for-Backend%3CS%3E" c [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="The typed kv backend which implements Accessor for for typed kv adapter."><title>Backend in opendal::raw::adapters::typed_kv - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Backend%3CS%3E" class="impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#36-53">source</a><a href="#impl-Backend%3CS%3E" class="anchor">§</a><h3 class="code-header">impl&lt;S&gt; <a class="struct [...]
+    S: <a class="trait" href="trait.Adapter.html" title="trait opendal::raw::adapters::typed_kv::Adapter">Adapter</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.new" class="method"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#41-46">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(kv: S) -&gt; Self</h4></section></summar [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_root" class="method"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#49-52">source</a><h4 class="code-header">pub fn <a href="#method.with_root" class="fn">with_root</a>(self, root: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Configure  [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Accessor-for-Backend%3CS%3E" class="impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#56-222">source</a><a href="#impl-Accessor-for-Backend%3CS%3E" c [...]
 <code>blocking_read</code> operation.</div></details><details class="toggle" open><summary><section id="associatedtype.Writer" class="associatedtype trait-impl"><a href="#associatedtype.Writer" class="anchor">§</a><h4 class="code-header">type <a href="../../trait.Accessor.html#associatedtype.Writer" class="associatedtype">Writer</a> = KvWriter&lt;S&gt;</h4></section></summary><div class='docblock'>Writer is the associated writer the could return in <code>write</code> operation.</div></de [...]
 <code>blocking_write</code> operation.</div></details><details class="toggle" open><summary><section id="associatedtype.Appender" class="associatedtype trait-impl"><a href="#associatedtype.Appender" class="anchor">§</a><h4 class="code-header">type <a href="../../trait.Accessor.html#associatedtype.Appender" class="associatedtype">Appender</a> = <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.unit.html">()</a></h4></section></summary><div class='docblock'>Appender [...]
-<code>blocking_list</code> operation.</div></details><details class="toggle method-toggle" open><summary><section id="method.info" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#66-97">source</a><a href="#method.info" class="anchor">§</a><h4 class="code-header">fn <a href="../../trait.Accessor.html#tymethod.info" class="fn">info</a>(&amp;self) -&gt; <a class="struct" href="../../struct.AccessorInfo.html" title="s [...]
+<code>blocking_list</code> operation.</div></details><details class="toggle method-toggle" open><summary><section id="method.info" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#65-96">source</a><a href="#method.info" class="anchor">§</a><h4 class="code-header">fn <a href="../../trait.Accessor.html#tymethod.info" class="fn">info</a>(&amp;self) -&gt; <a class="struct" href="../../struct.AccessorInfo.html" title="s [...]
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    __arg2: <a class="struct" href="../../../ops/struct.OpCreateDir.html" title="struct opendal::ops::OpCreateDir">OpCreateDir</a>
+    __arg2: <a class="struct" href="../../struct.OpCreateDir.html" title="struct opendal::raw::OpCreateDir">OpCreateDir</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../../type.Result.html" title="type opend [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>create</code> operation on the specified path <a href="../../trait.Accessor.html#method.create_dir">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_create_dir" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#105-110">source</a><a href="#method.blocking_create [...]
+    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>create</code> operation on the specified path <a href="../../trait.Accessor.html#method.create_dir">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_create_dir" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#104-109">source</a><a href="#method.blocking_create [...]
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../../../ops/struct.OpRead.html" title="struct opendal::ops::OpRead">OpRead</a>
+    args: <a class="struct" href="../../struct.OpRead.html" title="struct opendal::raw::OpRead">OpRead</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../../type.Result.html" title="type opend [...]
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>read</code> operation on the specified path, returns a
-<a href="../../../struct.Reader.html" title="struct opendal::Reader"><code>Reader</code></a> if operate successful. <a href="../../trait.Accessor.html#method.read">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_read" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#127-138">source</a><a href="#method.blocking_read" class="anchor">§</a><h4 class="code-he [...]
+<a href="../../../struct.Reader.html" title="struct opendal::Reader"><code>Reader</code></a> if operate successful. <a href="../../trait.Accessor.html#method.read">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_read" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#126-137">source</a><a href="#method.blocking_read" class="anchor">§</a><h4 class="code-he [...]
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../../../ops/struct.OpRead.html" title="struct opendal::ops::OpRead">OpRead</a>
-) -&gt; <a class="type" href="../../../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="../../struct.RpRead.html" title="struct opendal::raw::RpRead">RpRead</a>, Self::<a class="associatedtype" href="../../trait.Accessor.html#associatedtype.BlockingReader" title="type opendal::raw::Accessor::BlockingReader">BlockingReader</a>)&gt;</h4></section></summary><div class='docblock'>Invoke the <code>blocking_read</code> operation on the specified path. <a hr [...]
+    args: <a class="struct" href="../../struct.OpRead.html" title="struct opendal::raw::OpRead">OpRead</a>
+) -&gt; <a class="type" href="../../../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="../../struct.RpRead.html" title="struct opendal::raw::RpRead">RpRead</a>, Self::<a class="associatedtype" href="../../trait.Accessor.html#associatedtype.BlockingReader" title="type opendal::raw::Accessor::BlockingReader">BlockingReader</a>)&gt;</h4></section></summary><div class='docblock'>Invoke the <code>blocking_read</code> operation on the specified path. <a hr [...]
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../../../ops/struct.OpWrite.html" title="struct opendal::ops::OpWrite">OpWrite</a>
+    args: <a class="struct" href="../../struct.OpWrite.html" title="struct opendal::raw::OpWrite">OpWrite</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../../type.Result.html" title="type opend [...]
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>write</code> operation on the specified path, returns a
-written size if operate successful. <a href="../../trait.Accessor.html#method.write">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_write" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#146-150">source</a><a href="#method.blocking_write" class="anchor">§</a><h4 class="code-header">fn <a href="../../trait.Accessor.html#method.blocking_write" class="fn" [...]
+written size if operate successful. <a href="../../trait.Accessor.html#method.write">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_write" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#145-149">source</a><a href="#method.blocking_write" class="anchor">§</a><h4 class="code-header">fn <a href="../../trait.Accessor.html#method.blocking_write" class="fn" [...]
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../../../ops/struct.OpWrite.html" title="struct opendal::ops::OpWrite">OpWrite</a>
-) -&gt; <a class="type" href="../../../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="../../struct.RpWrite.html" title="struct opendal::raw::RpWrite">RpWrite</a>, Self::<a class="associatedtype" href="../../trait.Accessor.html#associatedtype.BlockingWriter" title="type opendal::raw::Accessor::BlockingWriter">BlockingWriter</a>)&gt;</h4></section></summary><div class='docblock'>Invoke the <code>blocking_write</code> operation on the specified path. < [...]
+    args: <a class="struct" href="../../struct.OpWrite.html" title="struct opendal::raw::OpWrite">OpWrite</a>
+) -&gt; <a class="type" href="../../../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="../../struct.RpWrite.html" title="struct opendal::raw::RpWrite">RpWrite</a>, Self::<a class="associatedtype" href="../../trait.Accessor.html#associatedtype.BlockingWriter" title="type opendal::raw::Accessor::BlockingWriter">BlockingWriter</a>)&gt;</h4></section></summary><div class='docblock'>Invoke the <code>blocking_write</code> operation on the specified path. < [...]
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    __arg2: <a class="struct" href="../../../ops/struct.OpStat.html" title="struct opendal::ops::OpStat">OpStat</a>
+    __arg2: <a class="struct" href="../../struct.OpStat.html" title="struct opendal::raw::OpStat">OpStat</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../../type.Result.html" title="type opend [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>stat</code> operation on the specified path. <a href="../../trait.Accessor.html#method.stat">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_stat" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#166-178">source</a><a href="#method.blocking_stat" class="anchor [...]
+    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>stat</code> operation on the specified path. <a href="../../trait.Accessor.html#method.stat">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_stat" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#165-177">source</a><a href="#method.blocking_stat" class="anchor [...]
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    __arg2: <a class="struct" href="../../../ops/struct.OpDelete.html" title="struct opendal::ops::OpDelete">OpDelete</a>
+    __arg2: <a class="struct" href="../../struct.OpDelete.html" title="struct opendal::raw::OpDelete">OpDelete</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../../type.Result.html" title="type opend [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>delete</code> operation on the specified path. <a href="../../trait.Accessor.html#method.delete">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_delete" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#187-192">source</a><a href="#method.blocking_delete" class [...]
+    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>delete</code> operation on the specified path. <a href="../../trait.Accessor.html#method.delete">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_delete" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#186-191">source</a><a href="#method.blocking_delete" class [...]
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../../../ops/struct.OpList.html" title="struct opendal::ops::OpList">OpList</a>
+    args: <a class="struct" href="../../struct.OpList.html" title="struct opendal::raw::OpList">OpList</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../../type.Result.html" title="type opend [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>list</code> operation on the specified path. <a href="../../trait.Accessor.html#method.list">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_list" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#209-222">source</a><a href="#method.blocking_list" class="anchor [...]
+    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>list</code> operation on the specified path. <a href="../../trait.Accessor.html#method.list">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_list" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/adapters/typed_kv/backend.rs.html#208-221">source</a><a href="#method.blocking_list" class="anchor [...]
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../../../ops/struct.OpList.html" title="struct opendal::ops::OpList">OpList</a>
-) -&gt; <a class="type" href="../../../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="../../struct.RpList.html" title="struct opendal::raw::RpList">RpList</a>, Self::<a class="associatedtype" href="../../trait.Accessor.html#associatedtype.BlockingPager" title="type opendal::raw::Accessor::BlockingPager">BlockingPager</a>)&gt;</h4></section></summary><div class='docblock'>Invoke the <code>blocking_list</code> operation on the specified path. <a href= [...]
+    args: <a class="struct" href="../../struct.OpList.html" title="struct opendal::raw::OpList">OpList</a>
+) -&gt; <a class="type" href="../../../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="../../struct.RpList.html" title="struct opendal::raw::RpList">RpList</a>, Self::<a class="associatedtype" href="../../trait.Accessor.html#associatedtype.BlockingPager" title="type opendal::raw::Accessor::BlockingPager">BlockingPager</a>)&gt;</h4></section></summary><div class='docblock'>Invoke the <code>blocking_list</code> operation on the specified path. <a href= [...]
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../../../ops/struct.OpAppend.html" title="struct opendal::ops::OpAppend">OpAppend</a>
+    args: <a class="struct" href="../../struct.OpAppend.html" title="struct opendal::raw::OpAppend">OpAppend</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../../type.Result.html" title="type opend [...]
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>append</code> operation on the specified path, returns a
-appended size if operate successful. <a href="../../trait.Accessor.html#method.append">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.copy" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/accessor.rs.html#168-175">source</a><a href="#method.copy" class="anchor">§</a><h4 class="code-header">fn <a href="../../trait.Accessor.html#method.copy" class="fn">copy</a>&lt;'life0, 'life1, 'life2, 'async_t [...]
+appended size if operate successful. <a href="../../trait.Accessor.html#method.append">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.copy" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/accessor.rs.html#167-174">source</a><a href="#method.copy" class="anchor">§</a><h4 class="code-header">fn <a href="../../trait.Accessor.html#method.copy" class="fn">copy</a>&lt;'life0, 'life1, 'life2, 'async_t [...]
     &amp;'life0 self,
     from: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
     to: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../../../ops/struct.OpCopy.html" title="struct opendal::ops::OpCopy">OpCopy</a>
+    args: <a class="struct" href="../../struct.OpCopy.html" title="struct opendal::raw::OpCopy">OpCopy</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../../type.Result.html" title="type opend [...]
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,
-    'life2: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>copy</code> operation on the specified <code>from</code> path and <code>to</code> path. <a href="../../trait.Accessor.html#method.copy">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.rename" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/accessor.rs.html#180-187">source</a><a href="#method.rename" c [...]
+    'life2: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>copy</code> operation on the specified <code>from</code> path and <code>to</code> path. <a href="../../trait.Accessor.html#method.copy">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.rename" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/accessor.rs.html#179-186">source</a><a href="#method.rename" c [...]
     &amp;'life0 self,
     from: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
     to: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../../../ops/struct.OpRename.html" title="struct opendal::ops::OpRename">OpRename</a>
+    args: <a class="struct" href="../../struct.OpRename.html" title="struct opendal::raw::OpRename">OpRename</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../../type.Result.html" title="type opend [...]
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,
-    'life2: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>rename</code> operation on the specified <code>from</code> path and <code>to</code> path. <a href="../../trait.Accessor.html#method.rename">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.presign" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/accessor.rs.html#248-255">source</a><a href="#method.pres [...]
+    'life2: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>rename</code> operation on the specified <code>from</code> path and <code>to</code> path. <a href="../../trait.Accessor.html#method.rename">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.presign" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/accessor.rs.html#247-254">source</a><a href="#method.pres [...]
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../../../ops/struct.OpPresign.html" title="struct opendal::ops::OpPresign">OpPresign</a>
+    args: <a class="struct" href="../../struct.OpPresign.html" title="struct opendal::raw::OpPresign">OpPresign</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../../type.Result.html" title="type opend [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>presign</code> operation on the specified path. <a href="../../trait.Accessor.html#method.presign">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.batch" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/accessor.rs.html#260-267">source</a><a href="#method.batch" class="anchor">§</a><h4 class="code-head [...]
+    'life1: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>presign</code> operation on the specified path. <a href="../../trait.Accessor.html#method.presign">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.batch" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/accessor.rs.html#259-266">source</a><a href="#method.batch" class="anchor">§</a><h4 class="code-head [...]
     &amp;'life0 self,
-    args: <a class="struct" href="../../../ops/struct.OpBatch.html" title="struct opendal::ops::OpBatch">OpBatch</a>
+    args: <a class="struct" href="../../struct.OpBatch.html" title="struct opendal::raw::OpBatch">OpBatch</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../../type.Result.html" title="type opend [...]
     Self: 'async_trait,
-    'life0: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>batch</code> operations. <a href="../../trait.Accessor.html#method.batch">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_copy" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/accessor.rs.html#316-323">source</a><a href="#method.blocking_copy" class="anchor">§</a><h4 class="code-header">fn <a [...]
+    'life0: 'async_trait,</span></h4></section></summary><div class='docblock'>Invoke the <code>batch</code> operations. <a href="../../trait.Accessor.html#method.batch">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_copy" class="method trait-impl"><a class="srclink rightside" href="../../../../src/opendal/raw/accessor.rs.html#315-322">source</a><a href="#method.blocking_copy" class="anchor">§</a><h4 class="code-header">fn <a [...]
     S: <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</span></h3></section><section id="impl-Send-for-Backend%3CS%3E" class="impl"><a href="#impl-Send-for-Backend%3CS%3E" class="anchor">§</a><h3 class="code-header">impl&lt;S&gt; <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for < [...]
     S: <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</span></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-Backend%3CS%3E" c [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
diff --git a/docs/rust/opendal/ops/enum.BatchOperation.html b/docs/rust/opendal/raw/enum.BatchOperation.html
similarity index 80%
rename from docs/rust/opendal/ops/enum.BatchOperation.html
rename to docs/rust/opendal/raw/enum.BatchOperation.html
index 4132b977..a92afd7b 100644
--- a/docs/rust/opendal/ops/enum.BatchOperation.html
+++ b/docs/rust/opendal/raw/enum.BatchOperation.html
@@ -1,10 +1,10 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Batch operation used for batch."><title>BatchOperation in opendal::ops - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../ [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Batch operation used for batch."><title>BatchOperation in opendal::raw - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../ [...]
 pub enum BatchOperation {
-    Delete(<a class="struct" href="struct.OpDelete.html" title="struct opendal::ops::OpDelete">OpDelete</a>),
+    Delete(<a class="struct" href="struct.OpDelete.html" title="struct opendal::raw::OpDelete">OpDelete</a>),
 }</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Batch operation used for batch.</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants (Non-exhaustive)<a href="#variants" class="anchor">§</a></h2><details class="toggle non-exhaustive"><summary class="hideme"><span>This enum is marked as non-exhaustive</span></summary><div class="docblock">Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variant [...]
-</div></div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-BatchOperation" class="impl"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#214-222">source</a><a href="#impl-BatchOperation" class="anchor">§</a><h3 class="code-header">impl <a class="enum" href="enum.BatchOperation.html" title [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-BatchOperation" class="impl"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#201">source</a><a href="#impl-Clone-for-BatchOperation" class="anchor">§</a><h3 class="code- [...]
+</div></details><h2 id="variants" class="variants small-section-header">Variants (Non-exhaustive)<a href="#variants" class="anchor">§</a></h2><details class="toggle non-exhaustive"><summary class="hideme"><span>This enum is marked as non-exhaustive</span></summary><div class="docblock">Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variant [...]
+</div></div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-BatchOperation" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#214-222">source</a><a href="#impl-BatchOperation" class="anchor">§</a><h3 class="code-header">impl <a class="enum" href="enum.BatchOperation.html" title=" [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-BatchOperation" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#201">source</a><a href="#impl-Clone-for-BatchOperation" class="anchor">§</a><h3 class="code-he [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/ops/enum.PresignOperation.html b/docs/rust/opendal/raw/enum.PresignOperation.html
similarity index 77%
rename from docs/rust/opendal/ops/enum.PresignOperation.html
rename to docs/rust/opendal/raw/enum.PresignOperation.html
index f6f438f4..1e570455 100644
--- a/docs/rust/opendal/ops/enum.PresignOperation.html
+++ b/docs/rust/opendal/raw/enum.PresignOperation.html
@@ -1,13 +1,13 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Presign operation used for presign."><title>PresignOperation in opendal::ops - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin hre [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Presign operation used for presign."><title>PresignOperation in opendal::raw - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin hre [...]
 pub enum PresignOperation {
-    Stat(<a class="struct" href="struct.OpStat.html" title="struct opendal::ops::OpStat">OpStat</a>),
-    Read(<a class="struct" href="struct.OpRead.html" title="struct opendal::ops::OpRead">OpRead</a>),
-    Write(<a class="struct" href="struct.OpWrite.html" title="struct opendal::ops::OpWrite">OpWrite</a>),
+    Stat(<a class="struct" href="struct.OpStat.html" title="struct opendal::raw::OpStat">OpStat</a>),
+    Read(<a class="struct" href="struct.OpRead.html" title="struct opendal::raw::OpRead">OpRead</a>),
+    Write(<a class="struct" href="struct.OpWrite.html" title="struct opendal::raw::OpWrite">OpWrite</a>),
 }</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Presign operation used for presign.</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants (Non-exhaustive)<a href="#variants" class="anchor">§</a></h2><details class="toggle non-exhaustive"><summary class="hideme"><span>This enum is marked as non-exhaustive</span></summary><div class="docblock">Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variant [...]
-</div><section id="variant.Read" class="variant"><a href="#variant.Read" class="anchor">§</a><h3 class="code-header">Read(<a class="struct" href="struct.OpRead.html" title="struct opendal::ops::OpRead">OpRead</a>)</h3></section><div class="docblock"><p>Presign a read operation.</p>
-</div><section id="variant.Write" class="variant"><a href="#variant.Write" class="anchor">§</a><h3 class="code-header">Write(<a class="struct" href="struct.OpWrite.html" title="struct opendal::ops::OpWrite">OpWrite</a>)</h3></section><div class="docblock"><p>Presign a write operation.</p>
-</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-PresignOperation" class="impl"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#148">source</a><a href="#impl-Clone-for-PresignOperation" class="anchor">§</a><h3 class="code-header">impl <a class= [...]
+</div></details><h2 id="variants" class="variants small-section-header">Variants (Non-exhaustive)<a href="#variants" class="anchor">§</a></h2><details class="toggle non-exhaustive"><summary class="hideme"><span>This enum is marked as non-exhaustive</span></summary><div class="docblock">Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variant [...]
+</div><section id="variant.Read" class="variant"><a href="#variant.Read" class="anchor">§</a><h3 class="code-header">Read(<a class="struct" href="struct.OpRead.html" title="struct opendal::raw::OpRead">OpRead</a>)</h3></section><div class="docblock"><p>Presign a read operation.</p>
+</div><section id="variant.Write" class="variant"><a href="#variant.Write" class="anchor">§</a><h3 class="code-header">Write(<a class="struct" href="struct.OpWrite.html" title="struct opendal::raw::OpWrite">OpWrite</a>)</h3></section><div class="docblock"><p>Presign a write operation.</p>
+</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-PresignOperation" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#148">source</a><a href="#impl-Clone-for-PresignOperation" class="anchor">§</a><h3 class="code-header">impl <a class="t [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/raw/index.html b/docs/rust/opendal/raw/index.html
index 148887a2..9c2b6480 100644
--- a/docs/rust/opendal/raw/index.html
+++ b/docs/rust/opendal/raw/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Raw modules provide raw APIs that used by underlying services"><title>opendal::raw - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorig [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Raw modules provide raw APIs that used by underlying services"><title>opendal::raw - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorig [...]
 <h3 id="notes"><a href="#notes">Notes</a></h3>
 <ul>
 <li>Only developers who want to develop new services or layers need to
@@ -9,5 +9,5 @@ API should never expose raw API directly.</li>
 them whenever possible.</li>
 </ul>
 </div></details><h2 id="modules" class="small-section-header"><a href="#modules">Modules</a></h2><ul class="item-table"><li><div class="item-name"><a class="mod" href="adapters/index.html" title="mod opendal::raw::adapters">adapters</a></div><div class="desc docblock-short">Providing adapters and its implementations.</div></li><li><div class="item-name"><a class="mod" href="oio/index.html" title="mod opendal::raw::oio">oio</a></div><div class="desc docblock-short"><code>oio</code> provid [...]
-output.</div></li></ul><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><ul class="item-table"><li><div class="item-name"><a class="struct" href="struct.AccessorInfo.html" title="struct opendal::raw::AccessorInfo">AccessorInfo</a></div><div class="desc docblock-short">Metadata for accessor, users can use this metadata to get information of underlying backend.</div></li><li><div class="item-name"><a class="struct" href="struct.BytesContentRange.html" title= [...]
+output.</div></li></ul><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><ul class="item-table"><li><div class="item-name"><a class="struct" href="struct.AccessorInfo.html" title="struct opendal::raw::AccessorInfo">AccessorInfo</a></div><div class="desc docblock-short">Metadata for accessor, users can use this metadata to get information of underlying backend.</div></li><li><div class="item-name"><a class="struct" href="struct.BytesContentRange.html" title= [...]
 method to inner.</div></li><li><div class="item-name"><a class="trait" href="trait.Part.html" title="trait opendal::raw::Part">Part</a></div><div class="desc docblock-short">Part is a trait for multipart part.</div></li></ul><h2 id="functions" class="small-section-header"><a href="#functions">Functions</a></h2><ul class="item-table"><li><div class="item-name"><a class="fn" href="fn.build_abs_path.html" title="fn opendal::raw::build_abs_path">build_abs_path</a></div><div class="desc docbl [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/oio/fn.to_flat_pager.html b/docs/rust/opendal/raw/oio/fn.to_flat_pager.html
index 02e3abdd..eaf4b09f 100644
--- a/docs/rust/opendal/raw/oio/fn.to_flat_pager.html
+++ b/docs/rust/opendal/raw/oio/fn.to_flat_pager.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="to_flat_pager is used to make a hierarchy pager flat."><title>to_flat_pager in opendal::raw::oio - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="to_flat_pager is used to make a hierarchy pager flat."><title>to_flat_pager in opendal::raw::oio - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font [...]
     acc: A,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
     size: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.usize.html">usize</a>
diff --git a/docs/rust/opendal/raw/oio/into_reader/fn.by_range.html b/docs/rust/opendal/raw/oio/into_reader/fn.by_range.html
index 08cb8996..63992d36 100644
--- a/docs/rust/opendal/raw/oio/into_reader/fn.by_range.html
+++ b/docs/rust/opendal/raw/oio/into_reader/fn.by_range.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Convert given reader into `oio::Reader` by range."><title>by_range in opendal::raw::oio::into_reader - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" typ [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Convert given reader into `oio::Reader` by range."><title>by_range in opendal::raw::oio::into_reader - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" typ [...]
     acc: <a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;A&gt;,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
     reader: A::<a class="associatedtype" href="../../trait.Accessor.html#associatedtype.Reader" title="type opendal::raw::Accessor::Reader">Reader</a>,
diff --git a/docs/rust/opendal/raw/oio/into_reader/struct.RangeReader.html b/docs/rust/opendal/raw/oio/into_reader/struct.RangeReader.html
index b0db03b3..5da65c7b 100644
--- a/docs/rust/opendal/raw/oio/into_reader/struct.RangeReader.html
+++ b/docs/rust/opendal/raw/oio/into_reader/struct.RangeReader.html
@@ -1,9 +1,9 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="RangeReader that can do seek on non-seekable reader."><title>RangeReader in opendal::raw::oio::into_reader - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="fon [...]
-</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Read-for-RangeReader%3CA%3E" class="impl"><a class="srclink rightside" href="../../../../src/opendal/raw/oio/into_reader/by_range.rs.html#127-276">source</a><a href="#impl-Read-for-RangeReader%3CA%3E" class="anchor">§</a><h3 [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="RangeReader that can do seek on non-seekable reader."><title>RangeReader in opendal::raw::oio::into_reader - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="fon [...]
+</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Read-for-RangeReader%3CA%3E" class="impl"><a class="srclink rightside" href="../../../../src/opendal/raw/oio/into_reader/by_range.rs.html#126-275">source</a><a href="#impl-Read-for-RangeReader%3CA%3E" class="anchor">§</a><h3 [...]
     &amp;mut self,
     cx: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;,
     buf: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.u8.html">u8</a>]
-) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="../../../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.usize.html">usize</a>&gt;&gt;</h4></section></summary><div class='docblock'>Read bytes asynchronously.</div></details><details class="toggle method-toggle" open><summary><section id="m [...]
+) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="../../../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.usize.html">usize</a>&gt;&gt;</h4></section></summary><div class='docblock'>Read bytes asynchronously.</div></details><details class="toggle method-toggle" open><summary><section id="m [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/raw/oio/struct.ToFlatPager.html b/docs/rust/opendal/raw/oio/struct.ToFlatPager.html
index c4d9e40f..77339f74 100644
--- a/docs/rust/opendal/raw/oio/struct.ToFlatPager.html
+++ b/docs/rust/opendal/raw/oio/struct.ToFlatPager.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="ToFlatPager will walk dir in bottom up way:"><title>ToFlatPager in opendal::raw::oio - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" cros [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="ToFlatPager will walk dir in bottom up way:"><title>ToFlatPager in opendal::raw::oio - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" cros [...]
 <ul>
 <li>List nested dir first</li>
 <li>Go back into parent dirs one by one</li>
@@ -25,11 +25,11 @@ We only make sure the nested dirs will show up before parent dirs.</p>
 <p>Especially, for storage services that can’t return dirs first, ToFlatPager
 may output parent dirs’ files before nested dirs, this is expected because files
 always output directly while listing.</p>
-</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-BlockingPage-for-ToFlatPager%3CA,+P%3E" class="impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/to_flat_pager.rs.html#154-212">source</a><a href="#impl-BlockingPage-for-ToFlatPager%3CA,+P%3E" class="anch [...]
+</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-BlockingPage-for-ToFlatPager%3CA,+P%3E" class="impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/to_flat_pager.rs.html#153-211">source</a><a href="#impl-BlockingPage-for-ToFlatPager%3CA,+P%3E" class="anch [...]
     A: <a class="trait" href="../trait.Accessor.html" title="trait opendal::raw::Accessor">Accessor</a>&lt;BlockingPager = P&gt;,
-    P: <a class="trait" href="trait.BlockingPage.html" title="trait opendal::raw::oio::BlockingPage">BlockingPage</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.next" class="method trait-impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/to_flat_pager.rs.html#159-211">source</a><a href="#method.next" class="anchor">§</a><h4 class="code-header">fn <a href="trait.BlockingPage.html#tymeth [...]
+    P: <a class="trait" href="trait.BlockingPage.html" title="trait opendal::raw::oio::BlockingPage">BlockingPage</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.next" class="method trait-impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/to_flat_pager.rs.html#158-210">source</a><a href="#method.next" class="anchor">§</a><h4 class="code-header">fn <a href="trait.BlockingPage.html#tymeth [...]
     A: <a class="trait" href="../trait.Accessor.html" title="trait opendal::raw::Accessor">Accessor</a>&lt;Pager = P&gt;,
-    P: <a class="trait" href="trait.Page.html" title="trait opendal::raw::oio::Page">Page</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.next-1" class="method trait-impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/to_flat_pager.rs.html#99-151">source</a><a href="#method.next-1" class="anchor">§</a><h4 class="code-header">fn <a href="trait.Page.html#tymethod.next" class="fn">next</a>& [...]
+    P: <a class="trait" href="trait.Page.html" title="trait opendal::raw::oio::Page">Page</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.next-1" class="method trait-impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/to_flat_pager.rs.html#98-150">source</a><a href="#method.next-1" class="anchor">§</a><h4 class="code-header">fn <a href="trait.Page.html#tymethod.next" class="fn">next</a>& [...]
     &amp;'life0 mut self
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../type.Result.html" title="type opendal: [...]
     Self: 'async_trait,
diff --git a/docs/rust/opendal/raw/oio/trait.BlockingPage.html b/docs/rust/opendal/raw/oio/trait.BlockingPage.html
index e687b78a..bbc9111a 100644
--- a/docs/rust/opendal/raw/oio/trait.BlockingPage.html
+++ b/docs/rust/opendal/raw/oio/trait.BlockingPage.html
@@ -5,6 +5,6 @@
 </div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="tymethod.next" class="method"><a class="srclink rightside" href="../../../src/opendal/raw/oio/page.rs.html#104">source</a><h4 class="code-header">fn <a href="#tymethod.next" class="fn">next</a>(&amp;mut self) -&gt; <a class="type" href="../../type.Result.html" title [...]
 <p><code>Ok(None)</code> means all pages have been returned. Any following call
 to <code>next</code> will always get the same result.</p>
-</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-BlockingPage-for-Option%3CP%3E" class="impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/page.rs.html#123-130">source</a><a href="#impl-BlockingPage-for-Option%3CP%3E" class="anchor">§</a><h3 class="code-header">impl&lt;P: <a class="trait" href= [...]
+</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-BlockingPage-for-Option%3CP%3E" class="impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/page.rs.html#123-130">source</a><a href="#impl-BlockingPage-for-Option%3CP%3E" class="anchor">§</a><h3 class="code-header">impl&lt;P: <a class="trait" href= [...]
     A: <a class="trait" href="../trait.Accessor.html" title="trait opendal::raw::Accessor">Accessor</a>&lt;BlockingPager = P&gt;,
     P: <a class="trait" href="trait.BlockingPage.html" title="trait opendal::raw::oio::BlockingPage">BlockingPage</a>,</span></h3></section><section id="impl-BlockingPage-for-ToHierarchyPager%3CP%3E" class="impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/to_hierarchy_pager.rs.html#136-150">source</a><a href="#impl-BlockingPage-for-ToHierarchyPager%3CP%3E" class="anchor">§</a><h3 class="code-header">impl&lt;P: <a class="trait" href="trait.BlockingPage.html" title="tr [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/oio/trait.BlockingRead.html b/docs/rust/opendal/raw/oio/trait.BlockingRead.html
index 1a7ee837..59476da8 100644
--- a/docs/rust/opendal/raw/oio/trait.BlockingRead.html
+++ b/docs/rust/opendal/raw/oio/trait.BlockingRead.html
@@ -19,5 +19,5 @@ is optional. We use <code>Read</code> to make users life easier.</p>
 how many bytes were read. <a href="https://doc.rust-lang.org/1.69.0/std/io/trait.Read.html#tymethod.read">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.read_vectored" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.36.0">1.36.0</span> · <a class="srclink" href="https://doc.rust-lang.org/1.69.0/src/std/io/mod.rs.html#647">source</a></span><a href="#method.read_vectored" class="a [...]
 implementation. <a href="https://doc.rust-lang.org/1.69.0/std/io/trait.Read.html#method.is_read_vectored">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.read_to_end" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/1.69.0/src/std/io/mod.rs.html#711">source</a></span><a href="#method.read_to_end" class="anchor" [...]
 To make BlockingReader work as expected, we must add this impl.</p>
-</div><div class="impl-items"><section id="method.read-2" class="method trait-impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/read.rs.html#336-338">source</a><a href="#method.read-2" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.read" class="fn">read</a>(&amp;mut self, buf: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.u8.html">u8</a>]) -&gt; <a class="type" href="../../type.Result.html" title="type opendal:: [...]
+</div><div class="impl-items"><section id="method.read-2" class="method trait-impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/read.rs.html#336-338">source</a><a href="#method.read-2" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.read" class="fn">read</a>(&amp;mut self, buf: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.u8.html">u8</a>]) -&gt; <a class="type" href="../../type.Result.html" title="type opendal:: [...]
     R: <a class="trait" href="https://doc.rust-lang.org/1.69.0/std/io/trait.Read.html" title="trait std::io::Read">Read</a> + <a class="trait" href="https://doc.rust-lang.org/1.69.0/std/io/trait.Seek.html" title="trait std::io::Seek">Seek</a> + <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sync.html" title="trait core::marker::Sync"> [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/oio/trait.Page.html b/docs/rust/opendal/raw/oio/trait.Page.html
index 7d6cbfed..50ed74a8 100644
--- a/docs/rust/opendal/raw/oio/trait.Page.html
+++ b/docs/rust/opendal/raw/oio/trait.Page.html
@@ -22,6 +22,6 @@ to <code>next</code> will always get the same result.</p>
     &amp;'life0 mut self
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../type.Result.html" title="type opendal: [...]
     Self: 'async_trait,
-    'life0: 'async_trait,</span></h4></section></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-Page-for-Pager" class="impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/page.rs.html#75-79">source</a><a href="#impl-Page-for-Pager" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Page.html" title="trait opendal::raw::o [...]
+    'life0: 'async_trait,</span></h4></section></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-Page-for-Pager" class="impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/page.rs.html#75-79">source</a><a href="#impl-Page-for-Pager" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Page.html" title="trait opendal::raw::o [...]
     A: <a class="trait" href="../trait.Accessor.html" title="trait opendal::raw::Accessor">Accessor</a>&lt;Pager = P&gt;,
     P: <a class="trait" href="trait.Page.html" title="trait opendal::raw::oio::Page">Page</a>,</span></h3></section><section id="impl-Page-for-ToHierarchyPager%3CP%3E" class="impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/to_hierarchy_pager.rs.html#120-134">source</a><a href="#impl-Page-for-ToHierarchyPager%3CP%3E" class="anchor">§</a><h3 class="code-header">impl&lt;P: <a class="trait" href="trait.Page.html" title="trait opendal::raw::oio::Page">Page</a>&gt; <a cla [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/oio/trait.Read.html b/docs/rust/opendal/raw/oio/trait.Read.html
index 7f60bf99..18201a0d 100644
--- a/docs/rust/opendal/raw/oio/trait.Read.html
+++ b/docs/rust/opendal/raw/oio/trait.Read.html
@@ -60,5 +60,5 @@ work as expected, we must add this impl.</p>
     &amp;mut self,
     cx: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;,
     buf: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.u8.html">u8</a>]
-) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="../../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.usize.html">usize</a>&gt;&gt;</h4></section><section id="method.poll_seek-2" class="method trait-impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/read.rs.html#143-145 [...]
+) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="../../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.usize.html">usize</a>&gt;&gt;</h4></section><section id="method.poll_seek-2" class="method trait-impl"><a class="srclink rightside" href="../../../src/opendal/raw/oio/read.rs.html#143-145 [...]
     R: AsyncRead + AsyncSeek + <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> + <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</span></h3></section><section id="impl-Read-for-IntoStreamableReader%3CR [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/ops/enum.BatchOperation.html b/docs/rust/opendal/raw/ops/enum.BatchOperation.html
new file mode 100644
index 00000000..3621671e
--- /dev/null
+++ b/docs/rust/opendal/raw/ops/enum.BatchOperation.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="refresh" content="0;URL=../../../opendal/raw/enum.BatchOperation.html">
+    <title>Redirection</title>
+</head>
+<body>
+    <p>Redirecting to <a href="../../../opendal/raw/enum.BatchOperation.html">../../../opendal/raw/enum.BatchOperation.html</a>...</p>
+    <script>location.replace("../../../opendal/raw/enum.BatchOperation.html" + location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/ops/enum.PresignOperation.html b/docs/rust/opendal/raw/ops/enum.PresignOperation.html
new file mode 100644
index 00000000..b68a3c19
--- /dev/null
+++ b/docs/rust/opendal/raw/ops/enum.PresignOperation.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="refresh" content="0;URL=../../../opendal/raw/enum.PresignOperation.html">
+    <title>Redirection</title>
+</head>
+<body>
+    <p>Redirecting to <a href="../../../opendal/raw/enum.PresignOperation.html">../../../opendal/raw/enum.PresignOperation.html</a>...</p>
+    <script>location.replace("../../../opendal/raw/enum.PresignOperation.html" + location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/ops/struct.OpAppend.html b/docs/rust/opendal/raw/ops/struct.OpAppend.html
new file mode 100644
index 00000000..cabd276f
--- /dev/null
+++ b/docs/rust/opendal/raw/ops/struct.OpAppend.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="refresh" content="0;URL=../../../opendal/raw/struct.OpAppend.html">
+    <title>Redirection</title>
+</head>
+<body>
+    <p>Redirecting to <a href="../../../opendal/raw/struct.OpAppend.html">../../../opendal/raw/struct.OpAppend.html</a>...</p>
+    <script>location.replace("../../../opendal/raw/struct.OpAppend.html" + location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/ops/struct.OpBatch.html b/docs/rust/opendal/raw/ops/struct.OpBatch.html
new file mode 100644
index 00000000..1201d62c
--- /dev/null
+++ b/docs/rust/opendal/raw/ops/struct.OpBatch.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="refresh" content="0;URL=../../../opendal/raw/struct.OpBatch.html">
+    <title>Redirection</title>
+</head>
+<body>
+    <p>Redirecting to <a href="../../../opendal/raw/struct.OpBatch.html">../../../opendal/raw/struct.OpBatch.html</a>...</p>
+    <script>location.replace("../../../opendal/raw/struct.OpBatch.html" + location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/ops/struct.OpCopy.html b/docs/rust/opendal/raw/ops/struct.OpCopy.html
new file mode 100644
index 00000000..1736bd28
--- /dev/null
+++ b/docs/rust/opendal/raw/ops/struct.OpCopy.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="refresh" content="0;URL=../../../opendal/raw/struct.OpCopy.html">
+    <title>Redirection</title>
+</head>
+<body>
+    <p>Redirecting to <a href="../../../opendal/raw/struct.OpCopy.html">../../../opendal/raw/struct.OpCopy.html</a>...</p>
+    <script>location.replace("../../../opendal/raw/struct.OpCopy.html" + location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/ops/struct.OpCreateDir.html b/docs/rust/opendal/raw/ops/struct.OpCreateDir.html
new file mode 100644
index 00000000..c69e5772
--- /dev/null
+++ b/docs/rust/opendal/raw/ops/struct.OpCreateDir.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="refresh" content="0;URL=../../../opendal/raw/struct.OpCreateDir.html">
+    <title>Redirection</title>
+</head>
+<body>
+    <p>Redirecting to <a href="../../../opendal/raw/struct.OpCreateDir.html">../../../opendal/raw/struct.OpCreateDir.html</a>...</p>
+    <script>location.replace("../../../opendal/raw/struct.OpCreateDir.html" + location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/ops/struct.OpDelete.html b/docs/rust/opendal/raw/ops/struct.OpDelete.html
new file mode 100644
index 00000000..e840cad1
--- /dev/null
+++ b/docs/rust/opendal/raw/ops/struct.OpDelete.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="refresh" content="0;URL=../../../opendal/raw/struct.OpDelete.html">
+    <title>Redirection</title>
+</head>
+<body>
+    <p>Redirecting to <a href="../../../opendal/raw/struct.OpDelete.html">../../../opendal/raw/struct.OpDelete.html</a>...</p>
+    <script>location.replace("../../../opendal/raw/struct.OpDelete.html" + location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/ops/struct.OpList.html b/docs/rust/opendal/raw/ops/struct.OpList.html
new file mode 100644
index 00000000..d133d218
--- /dev/null
+++ b/docs/rust/opendal/raw/ops/struct.OpList.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="refresh" content="0;URL=../../../opendal/raw/struct.OpList.html">
+    <title>Redirection</title>
+</head>
+<body>
+    <p>Redirecting to <a href="../../../opendal/raw/struct.OpList.html">../../../opendal/raw/struct.OpList.html</a>...</p>
+    <script>location.replace("../../../opendal/raw/struct.OpList.html" + location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/ops/struct.OpPresign.html b/docs/rust/opendal/raw/ops/struct.OpPresign.html
new file mode 100644
index 00000000..eebe902c
--- /dev/null
+++ b/docs/rust/opendal/raw/ops/struct.OpPresign.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="refresh" content="0;URL=../../../opendal/raw/struct.OpPresign.html">
+    <title>Redirection</title>
+</head>
+<body>
+    <p>Redirecting to <a href="../../../opendal/raw/struct.OpPresign.html">../../../opendal/raw/struct.OpPresign.html</a>...</p>
+    <script>location.replace("../../../opendal/raw/struct.OpPresign.html" + location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/ops/struct.OpRead.html b/docs/rust/opendal/raw/ops/struct.OpRead.html
new file mode 100644
index 00000000..e4da0a06
--- /dev/null
+++ b/docs/rust/opendal/raw/ops/struct.OpRead.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="refresh" content="0;URL=../../../opendal/raw/struct.OpRead.html">
+    <title>Redirection</title>
+</head>
+<body>
+    <p>Redirecting to <a href="../../../opendal/raw/struct.OpRead.html">../../../opendal/raw/struct.OpRead.html</a>...</p>
+    <script>location.replace("../../../opendal/raw/struct.OpRead.html" + location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/ops/struct.OpRename.html b/docs/rust/opendal/raw/ops/struct.OpRename.html
new file mode 100644
index 00000000..eb29874b
--- /dev/null
+++ b/docs/rust/opendal/raw/ops/struct.OpRename.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="refresh" content="0;URL=../../../opendal/raw/struct.OpRename.html">
+    <title>Redirection</title>
+</head>
+<body>
+    <p>Redirecting to <a href="../../../opendal/raw/struct.OpRename.html">../../../opendal/raw/struct.OpRename.html</a>...</p>
+    <script>location.replace("../../../opendal/raw/struct.OpRename.html" + location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/ops/struct.OpStat.html b/docs/rust/opendal/raw/ops/struct.OpStat.html
new file mode 100644
index 00000000..20368647
--- /dev/null
+++ b/docs/rust/opendal/raw/ops/struct.OpStat.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="refresh" content="0;URL=../../../opendal/raw/struct.OpStat.html">
+    <title>Redirection</title>
+</head>
+<body>
+    <p>Redirecting to <a href="../../../opendal/raw/struct.OpStat.html">../../../opendal/raw/struct.OpStat.html</a>...</p>
+    <script>location.replace("../../../opendal/raw/struct.OpStat.html" + location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/ops/struct.OpWrite.html b/docs/rust/opendal/raw/ops/struct.OpWrite.html
new file mode 100644
index 00000000..454b57bb
--- /dev/null
+++ b/docs/rust/opendal/raw/ops/struct.OpWrite.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="refresh" content="0;URL=../../../opendal/raw/struct.OpWrite.html">
+    <title>Redirection</title>
+</head>
+<body>
+    <p>Redirecting to <a href="../../../opendal/raw/struct.OpWrite.html">../../../opendal/raw/struct.OpWrite.html</a>...</p>
+    <script>location.replace("../../../opendal/raw/struct.OpWrite.html" + location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/sidebar-items.js b/docs/rust/opendal/raw/sidebar-items.js
index 62569a16..e9f0a488 100644
--- a/docs/rust/opendal/raw/sidebar-items.js
+++ b/docs/rust/opendal/raw/sidebar-items.js
@@ -1 +1 @@
-window.SIDEBAR_ITEMS = {"constant":["VERSION"],"enum":["AsyncBody","BatchedReply","Operation"],"fn":["build_abs_path","build_header_value","build_rel_path","build_rooted_abs_path","format_authorization_by_basic","format_authorization_by_bearer","format_content_md5","get_basename","get_parent","new_json_deserialize_error","new_json_serialize_error","new_request_build_error","new_request_credential_error","new_request_sign_error","new_xml_deserialize_error","normalize_path","normalize_root [...]
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"constant":["VERSION"],"enum":["AsyncBody","BatchOperation","BatchedReply","Operation","PresignOperation"],"fn":["build_abs_path","build_header_value","build_rel_path","build_rooted_abs_path","format_authorization_by_basic","format_authorization_by_bearer","format_content_md5","get_basename","get_parent","new_json_deserialize_error","new_json_serialize_error","new_request_build_error","new_request_credential_error","new_request_sign_error","new_xml_deserialize_err [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/struct.AccessorInfo.html b/docs/rust/opendal/raw/struct.AccessorInfo.html
index d63c4e16..20a9d496 100644
--- a/docs/rust/opendal/raw/struct.AccessorInfo.html
+++ b/docs/rust/opendal/raw/struct.AccessorInfo.html
@@ -1,20 +1,20 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Metadata for accessor, users can use this metadata to get information of underlying backend."><title>AccessorInfo in opendal::raw - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel= [...]
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-AccessorInfo" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#516-572">source</a><a href="#impl-AccessorInfo" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.AccessorInfo.html"  [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.set_scheme" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#523-526">source</a><h4 class="code-header">pub fn <a href="#method.set_scheme" class="fn">set_scheme</a>(&amp;mut self, scheme: <a class="enum" href="../enum.Scheme.html" title="enum opendal::Scheme">Scheme</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.h [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.root" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#529-531">source</a><h4 class="code-header">pub fn <a href="#method.root" class="fn">root</a>(&amp;self) -&gt; &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a></h4></section></summary><div class="docblock"><p>Root of backend, will be in format like <code>/path/t [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.set_root" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#536-539">source</a><h4 class="code-header">pub fn <a href="#method.set_root" class="fn">set_root</a>(&amp;mut self, root: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.refer [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Metadata for accessor, users can use this metadata to get information of underlying backend."><title>AccessorInfo in opendal::raw - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel= [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-AccessorInfo" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#515-571">source</a><a href="#impl-AccessorInfo" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.AccessorInfo.html"  [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_scheme" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#522-525">source</a><h4 class="code-header">pub fn <a href="#method.set_scheme" class="fn">set_scheme</a>(&amp;mut self, scheme: <a class="enum" href="../enum.Scheme.html" title="enum opendal::Scheme">Scheme</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.h [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.root" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#528-530">source</a><h4 class="code-header">pub fn <a href="#method.root" class="fn">root</a>(&amp;self) -&gt; &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a></h4></section></summary><div class="docblock"><p>Root of backend, will be in format like <code>/path/t [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_root" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#535-538">source</a><h4 class="code-header">pub fn <a href="#method.set_root" class="fn">set_root</a>(&amp;mut self, root: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.refer [...]
 <p>Note: input root must be normalized.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.name" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#547-549">source</a><h4 class="code-header">pub fn <a href="#method.name" class="fn">name</a>(&amp;self) -&gt; &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a></h4></section></summary><div class="docblock"><p>Name of backend, could be empty if underlying backend [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.name" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#546-548">source</a><h4 class="code-header">pub fn <a href="#method.name" class="fn">name</a>(&amp;self) -&gt; &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a></h4></section></summary><div class="docblock"><p>Name of backend, could be empty if underlying backend [...]
 <p>For example:</p>
 <ul>
 <li>name for <code>s3</code> =&gt; bucket name</li>
 <li>name for <code>azblob</code> =&gt; container name</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.set_name" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#552-555">source</a><h4 class="code-header">pub fn <a href="#method.set_name" class="fn">set_name</a>(&amp;mut self, name: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.refer [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.capability" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#558-560">source</a><h4 class="code-header">pub fn <a href="#method.capability" class="fn">capability</a>(&amp;self) -&gt; <a class="struct" href="../struct.Capability.html" title="struct opendal::Capability">Capability</a></h4></section></summary><div class="docblock"><p>Get backend’s capabilities.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.capability_mut" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#563-565">source</a><h4 class="code-header">pub fn <a href="#method.capability_mut" class="fn">capability_mut</a>(&amp;mut self) -&gt; &amp;mut <a class="struct" href="../struct.Capability.html" title="struct opendal::Capability">Capability</a></h4></section></summary><div class="docblock"><p>Get ba [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.set_capability" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#568-571">source</a><h4 class="code-header">pub fn <a href="#method.set_capability" class="fn">set_capability</a>(&amp;mut self, capability: <a class="struct" href="../struct.Capability.html" title="struct opendal::Capability">Capability</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.or [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-AccessorInfo" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#507">source</a><a href="#impl-Clone-for-AccessorInfo" class="anchor">§</a><h3 class="code-h [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_name" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#551-554">source</a><h4 class="code-header">pub fn <a href="#method.set_name" class="fn">set_name</a>(&amp;mut self, name: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.refer [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.capability" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#557-559">source</a><h4 class="code-header">pub fn <a href="#method.capability" class="fn">capability</a>(&amp;self) -&gt; <a class="struct" href="../struct.Capability.html" title="struct opendal::Capability">Capability</a></h4></section></summary><div class="docblock"><p>Get backend’s capabilities.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.capability_mut" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#562-564">source</a><h4 class="code-header">pub fn <a href="#method.capability_mut" class="fn">capability_mut</a>(&amp;mut self) -&gt; &amp;mut <a class="struct" href="../struct.Capability.html" title="struct opendal::Capability">Capability</a></h4></section></summary><div class="docblock"><p>Get ba [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.set_capability" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#567-570">source</a><h4 class="code-header">pub fn <a href="#method.set_capability" class="fn">set_capability</a>(&amp;mut self, capability: <a class="struct" href="../struct.Capability.html" title="struct opendal::Capability">Capability</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.or [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-AccessorInfo" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#506">source</a><a href="#impl-Clone-for-AccessorInfo" class="anchor">§</a><h3 class="code-h [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/ops/struct.OpAppend.html b/docs/rust/opendal/raw/struct.OpAppend.html
similarity index 76%
rename from docs/rust/opendal/ops/struct.OpAppend.html
rename to docs/rust/opendal/raw/struct.OpAppend.html
index 506c12b8..1aacb3d3 100644
--- a/docs/rust/opendal/ops/struct.OpAppend.html
+++ b/docs/rust/opendal/raw/struct.OpAppend.html
@@ -1,12 +1,12 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Args for `append` operation."><title>OpAppend in opendal::ops - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static [...]
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-OpAppend" class="impl"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#408-446">source</a><a href="#impl-OpAppend" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.OpAppend.html" title="struct o [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.content_type" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#415-417">source</a><h4 class="code-header">pub fn <a href="#method.content_type" class="fn">content_type</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc.r [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.with_content_type" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#420-423">source</a><h4 class="code-header">pub fn <a href="#method.with_content_type" class="fn">with_content_type</a>(self, content_type: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Se [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.content_disposition" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#426-428">source</a><h4 class="code-header">pub fn <a href="#method.content_disposition" class="fn">content_disposition</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.with_content_disposition" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#431-434">source</a><h4 class="code-header">pub fn <a href="#method.with_content_disposition" class="fn">with_content_disposition</a>(self, content_disposition: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.cache_control" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#437-439">source</a><h4 class="code-header">pub fn <a href="#method.cache_control" class="fn">cache_control</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://do [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.with_cache_control" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#442-445">source</a><h4 class="code-header">pub fn <a href="#method.with_cache_control" class="fn">with_cache_control</a>(self, cache_control: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock">< [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-OpAppend" class="impl"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#401">source</a><a href="#impl-Clone-for-OpAppend" class="anchor">§</a><h3 class="code-header">impl [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Args for `append` operation."><title>OpAppend in opendal::raw - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-OpAppend" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#408-446">source</a><a href="#impl-OpAppend" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.OpAppend.html" title="struct ope [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.content_type" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#415-417">source</a><h4 class="code-header">pub fn <a href="#method.content_type" class="fn">content_type</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc.rus [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_content_type" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#420-423">source</a><h4 class="code-header">pub fn <a href="#method.with_content_type" class="fn">with_content_type</a>(self, content_type: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set  [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.content_disposition" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#426-428">source</a><h4 class="code-header">pub fn <a href="#method.content_disposition" class="fn">content_disposition</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive"  [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_content_disposition" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#431-434">source</a><h4 class="code-header">pub fn <a href="#method.with_content_disposition" class="fn">with_content_disposition</a>(self, content_disposition: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary>< [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.cache_control" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#437-439">source</a><h4 class="code-header">pub fn <a href="#method.cache_control" class="fn">cache_control</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc. [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_cache_control" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#442-445">source</a><h4 class="code-header">pub fn <a href="#method.with_cache_control" class="fn">with_cache_control</a>(self, cache_control: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p> [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-OpAppend" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#401">source</a><a href="#impl-Clone-for-OpAppend" class="anchor">§</a><h3 class="code-header">impl < [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/ops/struct.OpBatch.html b/docs/rust/opendal/raw/struct.OpBatch.html
similarity index 80%
rename from docs/rust/opendal/ops/struct.OpBatch.html
rename to docs/rust/opendal/raw/struct.OpBatch.html
index 6fdbfdc4..0959823c 100644
--- a/docs/rust/opendal/ops/struct.OpBatch.html
+++ b/docs/rust/opendal/raw/struct.OpBatch.html
@@ -1,8 +1,8 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Args for `batch` operation."><title>OpBatch in opendal::ops - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.f [...]
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-OpBatch" class="impl"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#183-198">source</a><a href="#impl-OpBatch" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.OpBatch.html" title="struct open [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.operation" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#190-192">source</a><h4 class="code-header">pub fn <a href="#method.operation" class="fn">operation</a>(&amp;self) -&gt; &amp;[(<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="enum" href="enum.BatchOperation [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.into_operation" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#195-197">source</a><h4 class="code-header">pub fn <a href="#method.into_operation" class="fn">into_operation</a>(self) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;(<a class="struct" href="https://doc.rust-lang.org/ [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-OpBatch" class="impl"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#178">source</a><a href="#impl-Clone-for-OpBatch" class="anchor">§</a><h3 class="code-header">impl < [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Args for `batch` operation."><title>OpBatch in opendal::raw - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.f [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-OpBatch" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#183-198">source</a><a href="#impl-OpBatch" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.OpBatch.html" title="struct openda [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.operation" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#190-192">source</a><h4 class="code-header">pub fn <a href="#method.operation" class="fn">operation</a>(&amp;self) -&gt; &amp;[(<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="enum" href="enum.BatchOperation.h [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.into_operation" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#195-197">source</a><h4 class="code-header">pub fn <a href="#method.into_operation" class="fn">into_operation</a>(self) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;(<a class="struct" href="https://doc.rust-lang.org/1. [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-OpBatch" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#178">source</a><a href="#impl-Clone-for-OpBatch" class="anchor">§</a><h3 class="code-header">impl <a  [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/ops/struct.OpCopy.html b/docs/rust/opendal/raw/struct.OpCopy.html
similarity index 80%
rename from docs/rust/opendal/ops/struct.OpCopy.html
rename to docs/rust/opendal/raw/struct.OpCopy.html
index c0c0bce0..a4af36b9 100644
--- a/docs/rust/opendal/ops/struct.OpCopy.html
+++ b/docs/rust/opendal/raw/struct.OpCopy.html
@@ -1,6 +1,6 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Args for `copy` operation."><title>OpCopy in opendal::ops - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.fil [...]
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-OpCopy" class="impl"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#452-457">source</a><a href="#impl-OpCopy" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.OpCopy.html" title="struct opendal [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-OpCopy" class="impl"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#449">source</a><a href="#impl-Clone-for-OpCopy" class="anchor">§</a><h3 class="code-header">impl <a  [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Args for `copy` operation."><title>OpCopy in opendal::raw - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.fil [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-OpCopy" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#452-457">source</a><a href="#impl-OpCopy" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.OpCopy.html" title="struct opendal:: [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-OpCopy" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#449">source</a><a href="#impl-Clone-for-OpCopy" class="anchor">§</a><h3 class="code-header">impl <a cl [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/ops/struct.OpCreateDir.html b/docs/rust/opendal/raw/struct.OpCreateDir.html
similarity index 80%
rename from docs/rust/opendal/ops/struct.OpCreateDir.html
rename to docs/rust/opendal/raw/struct.OpCreateDir.html
index f0be283c..3875bbb5 100644
--- a/docs/rust/opendal/ops/struct.OpCreateDir.html
+++ b/docs/rust/opendal/raw/struct.OpCreateDir.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Args for `create` operation."><title>OpCreateDir in opendal::ops - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../sta [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Args for `create` operation."><title>OpCreateDir in opendal::raw - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../sta [...]
 <p>The path must be normalized.</p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-OpCreateDir" class="impl"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#32-37">source</a><a href="#impl-OpCreateDir" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.OpCreateDir.html" title="s [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-OpCreateDir" class="impl"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#29">source</a><a href="#impl-Clone-for-OpCreateDir" class="anchor">§</a><h3 class="code-header" [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-OpCreateDir" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#32-37">source</a><a href="#impl-OpCreateDir" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.OpCreateDir.html" title="str [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-OpCreateDir" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#29">source</a><a href="#impl-Clone-for-OpCreateDir" class="anchor">§</a><h3 class="code-header">i [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/ops/struct.OpDelete.html b/docs/rust/opendal/raw/struct.OpDelete.html
similarity index 77%
rename from docs/rust/opendal/ops/struct.OpDelete.html
rename to docs/rust/opendal/raw/struct.OpDelete.html
index 9b7f9b40..d60f7802 100644
--- a/docs/rust/opendal/ops/struct.OpDelete.html
+++ b/docs/rust/opendal/raw/struct.OpDelete.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Args for `delete` operation."><title>OpDelete in opendal::ops - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Args for `delete` operation."><title>OpDelete in opendal::raw - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static [...]
 <p>The path must be normalized.</p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-OpDelete" class="impl"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#45-50">source</a><a href="#impl-OpDelete" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.OpDelete.html" title="struct ope [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-OpDelete" class="impl"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#42">source</a><a href="#impl-Clone-for-OpDelete" class="anchor">§</a><h3 class="code-header">impl  [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-OpDelete" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#45-50">source</a><a href="#impl-OpDelete" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.OpDelete.html" title="struct opend [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-OpDelete" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#42">source</a><a href="#impl-Clone-for-OpDelete" class="anchor">§</a><h3 class="code-header">impl <a [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/ops/struct.OpList.html b/docs/rust/opendal/raw/struct.OpList.html
similarity index 76%
rename from docs/rust/opendal/ops/struct.OpList.html
rename to docs/rust/opendal/raw/struct.OpList.html
index 0abddfc2..c8cae604 100644
--- a/docs/rust/opendal/ops/struct.OpList.html
+++ b/docs/rust/opendal/raw/struct.OpList.html
@@ -1,12 +1,12 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Args for `list` operation."><title>OpList in opendal::ops - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.fil [...]
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-OpList" class="impl"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#77-115">source</a><a href="#impl-OpList" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.OpList.html" title="struct opendal: [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.with_limit" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#84-87">source</a><h4 class="code-header">pub fn <a href="#method.with_limit" class="fn">with_limit</a>(self, limit: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.usize.html">usize</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Change the limit of this list ope [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.limit" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#90-92">source</a><h4 class="code-header">pub fn <a href="#method.limit" class="fn">limit</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/prim [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.with_start_after" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#95-98">source</a><h4 class="code-header">pub fn <a href="#method.with_start_after" class="fn">with_start_after</a>(self, start_after: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Change t [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.start_after" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#101-103">source</a><h4 class="code-header">pub fn <a href="#method.start_after" class="fn">start_after</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc.rust [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.with_delimiter" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#106-109">source</a><h4 class="code-header">pub fn <a href="#method.with_delimiter" class="fn">with_delimiter</a>(self, delimiter: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Change the del [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.delimiter" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#112-114">source</a><h4 class="code-header">pub fn <a href="#method.delimiter" class="fn">delimiter</a>(&amp;self) -&gt; &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a></h4></section></summary><div class="docblock"><p>Get the current delimiter.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-OpList" class="impl"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#53">source</a><a href="#impl-Clone-for-OpList" class="anchor">§</a><h3 class="code-header">impl <a c [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Args for `list` operation."><title>OpList in opendal::raw - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.fil [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-OpList" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#77-115">source</a><a href="#impl-OpList" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.OpList.html" title="struct opendal::r [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_limit" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#84-87">source</a><h4 class="code-header">pub fn <a href="#method.with_limit" class="fn">with_limit</a>(self, limit: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.usize.html">usize</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Change the limit of this list opera [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.limit" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#90-92">source</a><h4 class="code-header">pub fn <a href="#method.limit" class="fn">limit</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primit [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_start_after" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#95-98">source</a><h4 class="code-header">pub fn <a href="#method.with_start_after" class="fn">with_start_after</a>(self, start_after: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Change the [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.start_after" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#101-103">source</a><h4 class="code-header">pub fn <a href="#method.start_after" class="fn">start_after</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc.rust-l [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_delimiter" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#106-109">source</a><h4 class="code-header">pub fn <a href="#method.with_delimiter" class="fn">with_delimiter</a>(self, delimiter: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Change the delim [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.delimiter" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#112-114">source</a><h4 class="code-header">pub fn <a href="#method.delimiter" class="fn">delimiter</a>(&amp;self) -&gt; &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a></h4></section></summary><div class="docblock"><p>Get the current delimiter.</p>
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-OpList" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#53">source</a><a href="#impl-Clone-for-OpList" class="anchor">§</a><h3 class="code-header">impl <a cla [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/ops/struct.OpPresign.html b/docs/rust/opendal/raw/struct.OpPresign.html
similarity index 80%
rename from docs/rust/opendal/ops/struct.OpPresign.html
rename to docs/rust/opendal/raw/struct.OpPresign.html
index 1cbe15ee..e3655cd7 100644
--- a/docs/rust/opendal/ops/struct.OpPresign.html
+++ b/docs/rust/opendal/raw/struct.OpPresign.html
@@ -1,9 +1,9 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Args for `presign` operation."><title>OpPresign in opendal::ops - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../stat [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Args for `presign` operation."><title>OpPresign in opendal::raw - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../stat [...]
 <p>The path must be normalized.</p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-OpPresign" class="impl"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#127-145">source</a><a href="#impl-OpPresign" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.OpPresign.html" title="struc [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.operation" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#137-139">source</a><h4 class="code-header">pub fn <a href="#method.operation" class="fn">operation</a>(&amp;self) -&gt; &amp;<a class="enum" href="enum.PresignOperation.html" title="enum opendal::ops::PresignOperation">PresignOperation</a></h4></section></summary><div class="docblock"><p>Get operation from [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.expire" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#142-144">source</a><h4 class="code-header">pub fn <a href="#method.expire" class="fn">expire</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a></h4></section></summary><div class="docblock"><p>Get expir [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-OpPresign" class="impl"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#120">source</a><a href="#impl-Clone-for-OpPresign" class="anchor">§</a><h3 class="code-header">im [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-OpPresign" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#127-145">source</a><a href="#impl-OpPresign" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.OpPresign.html" title="struct  [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.operation" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#137-139">source</a><h4 class="code-header">pub fn <a href="#method.operation" class="fn">operation</a>(&amp;self) -&gt; &amp;<a class="enum" href="enum.PresignOperation.html" title="enum opendal::raw::PresignOperation">PresignOperation</a></h4></section></summary><div class="docblock"><p>Get operation from op.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.expire" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#142-144">source</a><h4 class="code-header">pub fn <a href="#method.expire" class="fn">expire</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a></h4></section></summary><div class="docblock"><p>Get expire  [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-OpPresign" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#120">source</a><a href="#impl-Clone-for-OpPresign" class="anchor">§</a><h3 class="code-header">impl [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/ops/struct.OpRead.html b/docs/rust/opendal/raw/struct.OpRead.html
similarity index 72%
rename from docs/rust/opendal/ops/struct.OpRead.html
rename to docs/rust/opendal/raw/struct.OpRead.html
index b3f4fadb..4c8b7bbc 100644
--- a/docs/rust/opendal/ops/struct.OpRead.html
+++ b/docs/rust/opendal/raw/struct.OpRead.html
@@ -1,17 +1,17 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Args for `read` operation."><title>OpRead in opendal::ops - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.fil [...]
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-OpRead" class="impl"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#234-295">source</a><a href="#impl-OpRead" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.OpRead.html" title="struct opendal [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.with_range" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#241-244">source</a><h4 class="code-header">pub fn <a href="#method.with_range" class="fn">with_range</a>(self, range: <a class="struct" href="../raw/struct.BytesRange.html" title="struct opendal::raw::BytesRange">BytesRange</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Create a new OpRe [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.range" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#247-249">source</a><h4 class="code-header">pub fn <a href="#method.range" class="fn">range</a>(&amp;self) -&gt; <a class="struct" href="../raw/struct.BytesRange.html" title="struct opendal::raw::BytesRange">BytesRange</a></h4></section></summary><div class="docblock"><p>Get range from OpRead.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.with_override_content_disposition" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#252-255">source</a><h4 class="code-header">pub fn <a href="#method.with_override_content_disposition" class="fn">with_override_content_disposition</a>(self, content_disposition: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; S [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.override_content_disposition" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#259-261">source</a><h4 class="code-header">pub fn <a href="#method.override_content_disposition" class="fn">override_content_disposition</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>& [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Args for `read` operation."><title>OpRead in opendal::raw - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.fil [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-OpRead" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#234-295">source</a><a href="#impl-OpRead" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.OpRead.html" title="struct opendal:: [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_range" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#241-244">source</a><h4 class="code-header">pub fn <a href="#method.with_range" class="fn">with_range</a>(self, range: <a class="struct" href="struct.BytesRange.html" title="struct opendal::raw::BytesRange">BytesRange</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Create a new OpRead with r [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.range" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#247-249">source</a><h4 class="code-header">pub fn <a href="#method.range" class="fn">range</a>(&amp;self) -&gt; <a class="struct" href="struct.BytesRange.html" title="struct opendal::raw::BytesRange">BytesRange</a></h4></section></summary><div class="docblock"><p>Get range from OpRead.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_override_content_disposition" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#252-255">source</a><h4 class="code-header">pub fn <a href="#method.with_override_content_disposition" class="fn">with_override_content_disposition</a>(self, content_disposition: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Sel [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.override_content_disposition" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#259-261">source</a><h4 class="code-header">pub fn <a href="#method.override_content_disposition" class="fn">override_content_disposition</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt [...]
 operation.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.with_override_cache_control" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#264-267">source</a><h4 class="code-header">pub fn <a href="#method.with_override_cache_control" class="fn">with_override_cache_control</a>(self, cache_control: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summ [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.override_cache_control" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#270-272">source</a><h4 class="code-header">pub fn <a href="#method.override_cache_control" class="fn">override_cache_control</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class=" [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.with_if_match" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#275-278">source</a><h4 class="code-header">pub fn <a href="#method.with_if_match" class="fn">with_if_match</a>(self, if_match: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set the If-Match o [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.if_match" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#281-283">source</a><h4 class="code-header">pub fn <a href="#method.if_match" class="fn">if_match</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc.rust-lang.org [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.with_if_none_match" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#286-289">source</a><h4 class="code-header">pub fn <a href="#method.with_if_none_match" class="fn">with_if_none_match</a>(self, if_none_match: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock">< [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.if_none_match" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#292-294">source</a><h4 class="code-header">pub fn <a href="#method.if_none_match" class="fn">if_none_match</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://do [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-OpRead" class="impl"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#225">source</a><a href="#impl-Clone-for-OpRead" class="anchor">§</a><h3 class="code-header">impl <a  [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_override_cache_control" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#264-267">source</a><h4 class="code-header">pub fn <a href="#method.with_override_cache_control" class="fn">with_override_cache_control</a>(self, cache_control: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summar [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.override_cache_control" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#270-272">source</a><h4 class="code-header">pub fn <a href="#method.override_cache_control" class="fn">override_cache_control</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="pr [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_if_match" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#275-278">source</a><h4 class="code-header">pub fn <a href="#method.with_if_match" class="fn">with_if_match</a>(self, if_match: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set the If-Match of  [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.if_match" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#281-283">source</a><h4 class="code-header">pub fn <a href="#method.if_match" class="fn">if_match</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc.rust-lang.org/1 [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_if_none_match" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#286-289">source</a><h4 class="code-header">pub fn <a href="#method.with_if_none_match" class="fn">with_if_none_match</a>(self, if_none_match: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p> [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.if_none_match" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#292-294">source</a><h4 class="code-header">pub fn <a href="#method.if_none_match" class="fn">if_none_match</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc. [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-OpRead" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#225">source</a><a href="#impl-Clone-for-OpRead" class="anchor">§</a><h3 class="code-header">impl <a cl [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/ops/struct.OpRename.html b/docs/rust/opendal/raw/struct.OpRename.html
similarity index 80%
rename from docs/rust/opendal/ops/struct.OpRename.html
rename to docs/rust/opendal/raw/struct.OpRename.html
index 9159a3c7..e81ecb55 100644
--- a/docs/rust/opendal/ops/struct.OpRename.html
+++ b/docs/rust/opendal/raw/struct.OpRename.html
@@ -1,6 +1,6 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Args for `rename` operation."><title>OpRename in opendal::ops - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static [...]
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-OpRename" class="impl"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#463-468">source</a><a href="#impl-OpRename" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.OpRename.html" title="struct o [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-OpRename" class="impl"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#460">source</a><a href="#impl-Clone-for-OpRename" class="anchor">§</a><h3 class="code-header">impl [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Args for `rename` operation."><title>OpRename in opendal::raw - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-OpRename" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#463-468">source</a><a href="#impl-OpRename" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.OpRename.html" title="struct ope [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-OpRename" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#460">source</a><a href="#impl-Clone-for-OpRename" class="anchor">§</a><h3 class="code-header">impl < [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/ops/struct.OpStat.html b/docs/rust/opendal/raw/struct.OpStat.html
similarity index 76%
rename from docs/rust/opendal/ops/struct.OpStat.html
rename to docs/rust/opendal/raw/struct.OpStat.html
index 5580078f..ae39c6d3 100644
--- a/docs/rust/opendal/ops/struct.OpStat.html
+++ b/docs/rust/opendal/raw/struct.OpStat.html
@@ -1,10 +1,10 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Args for `stat` operation."><title>OpStat in opendal::ops - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.fil [...]
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-OpStat" class="impl"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#304-331">source</a><a href="#impl-OpStat" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.OpStat.html" title="struct opendal [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.with_if_match" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#311-314">source</a><h4 class="code-header">pub fn <a href="#method.with_if_match" class="fn">with_if_match</a>(self, if_match: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set the If-Match o [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.if_match" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#317-319">source</a><h4 class="code-header">pub fn <a href="#method.if_match" class="fn">if_match</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc.rust-lang.org [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.with_if_none_match" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#322-325">source</a><h4 class="code-header">pub fn <a href="#method.with_if_none_match" class="fn">with_if_none_match</a>(self, if_none_match: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock">< [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.if_none_match" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#328-330">source</a><h4 class="code-header">pub fn <a href="#method.if_none_match" class="fn">if_none_match</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://do [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-OpStat" class="impl"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#298">source</a><a href="#impl-Clone-for-OpStat" class="anchor">§</a><h3 class="code-header">impl <a  [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Args for `stat` operation."><title>OpStat in opendal::raw - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.fil [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-OpStat" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#304-331">source</a><a href="#impl-OpStat" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.OpStat.html" title="struct opendal:: [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_if_match" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#311-314">source</a><h4 class="code-header">pub fn <a href="#method.with_if_match" class="fn">with_if_match</a>(self, if_match: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set the If-Match of  [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.if_match" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#317-319">source</a><h4 class="code-header">pub fn <a href="#method.if_match" class="fn">if_match</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc.rust-lang.org/1 [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_if_none_match" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#322-325">source</a><h4 class="code-header">pub fn <a href="#method.with_if_none_match" class="fn">with_if_none_match</a>(self, if_none_match: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p> [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.if_none_match" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#328-330">source</a><h4 class="code-header">pub fn <a href="#method.if_none_match" class="fn">if_none_match</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc. [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-OpStat" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#298">source</a><a href="#impl-Clone-for-OpStat" class="anchor">§</a><h3 class="code-header">impl <a cl [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/ops/struct.OpWrite.html b/docs/rust/opendal/raw/struct.OpWrite.html
similarity index 73%
rename from docs/rust/opendal/ops/struct.OpWrite.html
rename to docs/rust/opendal/raw/struct.OpWrite.html
index 4c908712..ef37fb80 100644
--- a/docs/rust/opendal/ops/struct.OpWrite.html
+++ b/docs/rust/opendal/raw/struct.OpWrite.html
@@ -1,18 +1,18 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Args for `write` operation."><title>OpWrite in opendal::ops - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.f [...]
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-OpWrite" class="impl"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#342-398">source</a><a href="#impl-OpWrite" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.OpWrite.html" title="struct open [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Args for `write` operation."><title>OpWrite in opendal::raw - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.f [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-OpWrite" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#342-398">source</a><a href="#impl-OpWrite" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.OpWrite.html" title="struct openda [...]
 <p>If input path is not a file path, an error will be returned.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.content_length" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#353-355">source</a><h4 class="code-header">pub fn <a href="#method.content_length" class="fn">content_length</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc. [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.content_length" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#353-355">source</a><h4 class="code-header">pub fn <a href="#method.content_length" class="fn">content_length</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.ru [...]
 <p>The content length is the total length of the data to be written.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.with_content_length" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#361-364">source</a><h4 class="code-header">pub fn <a href="#method.with_content_length" class="fn">with_content_length</a>(self, content_length: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.u64.html">u64</a>) -&gt; Self</h4></section></summary><div class="docblock"><p [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_content_length" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#361-364">source</a><h4 class="code-header">pub fn <a href="#method.with_content_length" class="fn">with_content_length</a>(self, content_length: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.u64.html">u64</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>S [...]
 <p>If the content length is not set, the content length will be
 calculated automatically by buffering part of data.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.content_type" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#367-369">source</a><h4 class="code-header">pub fn <a href="#method.content_type" class="fn">content_type</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc.r [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.with_content_type" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#372-375">source</a><h4 class="code-header">pub fn <a href="#method.with_content_type" class="fn">with_content_type</a>(self, content_type: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Se [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.content_disposition" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#378-380">source</a><h4 class="code-header">pub fn <a href="#method.content_disposition" class="fn">content_disposition</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.with_content_disposition" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#383-386">source</a><h4 class="code-header">pub fn <a href="#method.with_content_disposition" class="fn">with_content_disposition</a>(self, content_disposition: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.cache_control" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#389-391">source</a><h4 class="code-header">pub fn <a href="#method.cache_control" class="fn">cache_control</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://do [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.with_cache_control" class="method"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#394-397">source</a><h4 class="code-header">pub fn <a href="#method.with_cache_control" class="fn">with_cache_control</a>(self, cache_control: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock">< [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-OpWrite" class="impl"><a class="srclink rightside" href="../../src/opendal/types/ops.rs.html#334">source</a><a href="#impl-Clone-for-OpWrite" class="anchor">§</a><h3 class="code-header">impl < [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.content_type" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#367-369">source</a><h4 class="code-header">pub fn <a href="#method.content_type" class="fn">content_type</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc.rus [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_content_type" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#372-375">source</a><h4 class="code-header">pub fn <a href="#method.with_content_type" class="fn">with_content_type</a>(self, content_type: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Set  [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.content_disposition" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#378-380">source</a><h4 class="code-header">pub fn <a href="#method.content_disposition" class="fn">content_disposition</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive"  [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_content_disposition" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#383-386">source</a><h4 class="code-header">pub fn <a href="#method.with_content_disposition" class="fn">with_content_disposition</a>(self, content_disposition: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary>< [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.cache_control" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#389-391">source</a><h4 class="code-header">pub fn <a href="#method.cache_control" class="fn">cache_control</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc. [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_cache_control" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#394-397">source</a><h4 class="code-header">pub fn <a href="#method.with_cache_control" class="fn">with_cache_control</a>(self, cache_control: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p> [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-OpWrite" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/ops.rs.html#334">source</a><a href="#impl-Clone-for-OpWrite" class="anchor">§</a><h3 class="code-header">impl <a  [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/raw/trait.Accessor.html b/docs/rust/opendal/raw/trait.Accessor.html
index be2992c3..24c280e6 100644
--- a/docs/rust/opendal/raw/trait.Accessor.html
+++ b/docs/rust/opendal/raw/trait.Accessor.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Underlying trait of all backends for implementors."><title>Accessor in opendal::raw - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossori [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Underlying trait of all backends for implementors."><title>Accessor in opendal::raw - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossori [...]
     type <a href="#associatedtype.Reader" class="associatedtype">Reader</a>: <a class="trait" href="oio/trait.Read.html" title="trait opendal::raw::oio::Read">Read</a>;
     type <a href="#associatedtype.BlockingReader" class="associatedtype">BlockingReader</a>: <a class="trait" href="oio/trait.BlockingRead.html" title="trait opendal::raw::oio::BlockingRead">BlockingRead</a>;
     type <a href="#associatedtype.Writer" class="associatedtype">Writer</a>: <a class="trait" href="oio/trait.Write.html" title="trait opendal::raw::oio::Write">Write</a>;
@@ -14,7 +14,7 @@
     fn <a href="#method.create_dir" class="fn">create_dir</a>&lt;'life0, 'life1, 'async_trait&gt;(
         &amp;'life0 self,
         path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-        args: <a class="struct" href="../ops/struct.OpCreateDir.html" title="struct opendal::ops::OpCreateDir">OpCreateDir</a>
+        args: <a class="struct" href="struct.OpCreateDir.html" title="struct opendal::raw::OpCreateDir">OpCreateDir</a>
     ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal [...]
        <span class="where">where Self: 'async_trait,
              'life0: 'async_trait,
@@ -22,7 +22,7 @@
 <span class="item-spacer"></span>    fn <a href="#method.read" class="fn">read</a>&lt;'life0, 'life1, 'async_trait&gt;(
         &amp;'life0 self,
         path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-        args: <a class="struct" href="../ops/struct.OpRead.html" title="struct opendal::ops::OpRead">OpRead</a>
+        args: <a class="struct" href="struct.OpRead.html" title="struct opendal::raw::OpRead">OpRead</a>
     ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal [...]
        <span class="where">where Self: 'async_trait,
              'life0: 'async_trait,
@@ -30,7 +30,7 @@
 <span class="item-spacer"></span>    fn <a href="#method.write" class="fn">write</a>&lt;'life0, 'life1, 'async_trait&gt;(
         &amp;'life0 self,
         path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-        args: <a class="struct" href="../ops/struct.OpWrite.html" title="struct opendal::ops::OpWrite">OpWrite</a>
+        args: <a class="struct" href="struct.OpWrite.html" title="struct opendal::raw::OpWrite">OpWrite</a>
     ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal [...]
        <span class="where">where Self: 'async_trait,
              'life0: 'async_trait,
@@ -38,7 +38,7 @@
 <span class="item-spacer"></span>    fn <a href="#method.append" class="fn">append</a>&lt;'life0, 'life1, 'async_trait&gt;(
         &amp;'life0 self,
         path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-        args: <a class="struct" href="../ops/struct.OpAppend.html" title="struct opendal::ops::OpAppend">OpAppend</a>
+        args: <a class="struct" href="struct.OpAppend.html" title="struct opendal::raw::OpAppend">OpAppend</a>
     ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal [...]
        <span class="where">where Self: 'async_trait,
              'life0: 'async_trait,
@@ -47,7 +47,7 @@
         &amp;'life0 self,
         from: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
         to: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-        args: <a class="struct" href="../ops/struct.OpCopy.html" title="struct opendal::ops::OpCopy">OpCopy</a>
+        args: <a class="struct" href="struct.OpCopy.html" title="struct opendal::raw::OpCopy">OpCopy</a>
     ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal [...]
        <span class="where">where Self: 'async_trait,
              'life0: 'async_trait,
@@ -57,7 +57,7 @@
         &amp;'life0 self,
         from: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
         to: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-        args: <a class="struct" href="../ops/struct.OpRename.html" title="struct opendal::ops::OpRename">OpRename</a>
+        args: <a class="struct" href="struct.OpRename.html" title="struct opendal::raw::OpRename">OpRename</a>
     ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal [...]
        <span class="where">where Self: 'async_trait,
              'life0: 'async_trait,
@@ -66,7 +66,7 @@
 <span class="item-spacer"></span>    fn <a href="#method.stat" class="fn">stat</a>&lt;'life0, 'life1, 'async_trait&gt;(
         &amp;'life0 self,
         path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-        args: <a class="struct" href="../ops/struct.OpStat.html" title="struct opendal::ops::OpStat">OpStat</a>
+        args: <a class="struct" href="struct.OpStat.html" title="struct opendal::raw::OpStat">OpStat</a>
     ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal [...]
        <span class="where">where Self: 'async_trait,
              'life0: 'async_trait,
@@ -74,7 +74,7 @@
 <span class="item-spacer"></span>    fn <a href="#method.delete" class="fn">delete</a>&lt;'life0, 'life1, 'async_trait&gt;(
         &amp;'life0 self,
         path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-        args: <a class="struct" href="../ops/struct.OpDelete.html" title="struct opendal::ops::OpDelete">OpDelete</a>
+        args: <a class="struct" href="struct.OpDelete.html" title="struct opendal::raw::OpDelete">OpDelete</a>
     ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal [...]
        <span class="where">where Self: 'async_trait,
              'life0: 'async_trait,
@@ -82,7 +82,7 @@
 <span class="item-spacer"></span>    fn <a href="#method.list" class="fn">list</a>&lt;'life0, 'life1, 'async_trait&gt;(
         &amp;'life0 self,
         path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-        args: <a class="struct" href="../ops/struct.OpList.html" title="struct opendal::ops::OpList">OpList</a>
+        args: <a class="struct" href="struct.OpList.html" title="struct opendal::raw::OpList">OpList</a>
     ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal [...]
        <span class="where">where Self: 'async_trait,
              'life0: 'async_trait,
@@ -90,45 +90,45 @@
 <span class="item-spacer"></span>    fn <a href="#method.presign" class="fn">presign</a>&lt;'life0, 'life1, 'async_trait&gt;(
         &amp;'life0 self,
         path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-        args: <a class="struct" href="../ops/struct.OpPresign.html" title="struct opendal::ops::OpPresign">OpPresign</a>
+        args: <a class="struct" href="struct.OpPresign.html" title="struct opendal::raw::OpPresign">OpPresign</a>
     ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal [...]
        <span class="where">where Self: 'async_trait,
              'life0: 'async_trait,
              'life1: 'async_trait</span> { ... }
 <span class="item-spacer"></span>    fn <a href="#method.batch" class="fn">batch</a>&lt;'life0, 'async_trait&gt;(
         &amp;'life0 self,
-        args: <a class="struct" href="../ops/struct.OpBatch.html" title="struct opendal::ops::OpBatch">OpBatch</a>
+        args: <a class="struct" href="struct.OpBatch.html" title="struct opendal::raw::OpBatch">OpBatch</a>
     ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal [...]
        <span class="where">where Self: 'async_trait,
              'life0: 'async_trait</span> { ... }
 <span class="item-spacer"></span>    fn <a href="#method.blocking_create_dir" class="fn">blocking_create_dir</a>(
         &amp;self,
         path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-        args: <a class="struct" href="../ops/struct.OpCreateDir.html" title="struct opendal::ops::OpCreateDir">OpCreateDir</a>
+        args: <a class="struct" href="struct.OpCreateDir.html" title="struct opendal::raw::OpCreateDir">OpCreateDir</a>
     ) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="struct" href="struct.RpCreateDir.html" title="struct opendal::raw::RpCreateDir">RpCreateDir</a>&gt; { ... }
 <span class="item-spacer"></span>    fn <a href="#method.blocking_read" class="fn">blocking_read</a>(
         &amp;self,
         path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-        args: <a class="struct" href="../ops/struct.OpRead.html" title="struct opendal::ops::OpRead">OpRead</a>
+        args: <a class="struct" href="struct.OpRead.html" title="struct opendal::raw::OpRead">OpRead</a>
     ) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="struct.RpRead.html" title="struct opendal::raw::RpRead">RpRead</a>, Self::<a class="associatedtype" href="trait.Accessor.html#associatedtype.BlockingReader" title="type opendal::raw::Accessor::BlockingReader">BlockingReader</a>)&gt; { ... }
 <span class="item-spacer"></span>    fn <a href="#method.blocking_write" class="fn">blocking_write</a>(
         &amp;self,
         path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-        args: <a class="struct" href="../ops/struct.OpWrite.html" title="struct opendal::ops::OpWrite">OpWrite</a>
+        args: <a class="struct" href="struct.OpWrite.html" title="struct opendal::raw::OpWrite">OpWrite</a>
     ) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="struct.RpWrite.html" title="struct opendal::raw::RpWrite">RpWrite</a>, Self::<a class="associatedtype" href="trait.Accessor.html#associatedtype.BlockingWriter" title="type opendal::raw::Accessor::BlockingWriter">BlockingWriter</a>)&gt; { ... }
-<span class="item-spacer"></span>    fn <a href="#method.blocking_copy" class="fn">blocking_copy</a>(&amp;self, from: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, to: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, args: <a class="struct" href="../ops/struct.OpCopy.html" title="struct opendal::ops::OpCopy">OpCopy</a>) -&gt; <a class="type" href="../type.Result.html" title="type opendal: [...]
+<span class="item-spacer"></span>    fn <a href="#method.blocking_copy" class="fn">blocking_copy</a>(&amp;self, from: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, to: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, args: <a class="struct" href="struct.OpCopy.html" title="struct opendal::raw::OpCopy">OpCopy</a>) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result [...]
 <span class="item-spacer"></span>    fn <a href="#method.blocking_rename" class="fn">blocking_rename</a>(
         &amp;self,
         from: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
         to: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-        args: <a class="struct" href="../ops/struct.OpRename.html" title="struct opendal::ops::OpRename">OpRename</a>
+        args: <a class="struct" href="struct.OpRename.html" title="struct opendal::raw::OpRename">OpRename</a>
     ) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="struct" href="struct.RpRename.html" title="struct opendal::raw::RpRename">RpRename</a>&gt; { ... }
-<span class="item-spacer"></span>    fn <a href="#method.blocking_stat" class="fn">blocking_stat</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, args: <a class="struct" href="../ops/struct.OpStat.html" title="struct opendal::ops::OpStat">OpStat</a>) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="struct" href="struct.RpStat.html" title="struct opendal::raw::RpStat" [...]
-<span class="item-spacer"></span>    fn <a href="#method.blocking_delete" class="fn">blocking_delete</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, args: <a class="struct" href="../ops/struct.OpDelete.html" title="struct opendal::ops::OpDelete">OpDelete</a>) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="struct" href="struct.RpDelete.html" title="struct opendal:: [...]
+<span class="item-spacer"></span>    fn <a href="#method.blocking_stat" class="fn">blocking_stat</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, args: <a class="struct" href="struct.OpStat.html" title="struct opendal::raw::OpStat">OpStat</a>) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="struct" href="struct.RpStat.html" title="struct opendal::raw::RpStat">RpStat [...]
+<span class="item-spacer"></span>    fn <a href="#method.blocking_delete" class="fn">blocking_delete</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, args: <a class="struct" href="struct.OpDelete.html" title="struct opendal::raw::OpDelete">OpDelete</a>) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="struct" href="struct.RpDelete.html" title="struct opendal::raw::Rp [...]
 <span class="item-spacer"></span>    fn <a href="#method.blocking_list" class="fn">blocking_list</a>(
         &amp;self,
         path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-        args: <a class="struct" href="../ops/struct.OpList.html" title="struct opendal::ops::OpList">OpList</a>
+        args: <a class="struct" href="struct.OpList.html" title="struct opendal::raw::OpList">OpList</a>
     ) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="struct.RpList.html" title="struct opendal::raw::RpList">RpList</a>, Self::<a class="associatedtype" href="trait.Accessor.html#associatedtype.BlockingPager" title="type opendal::raw::Accessor::BlockingPager">BlockingPager</a>)&gt; { ... }
 </details>}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Underlying trait of all backends for implementors.</p>
 <p>The actual data access of storage service happens in Accessor layer.
@@ -164,17 +164,17 @@ basic operations.
 </ul>
 </li>
 </ul>
-</div></details><h2 id="required-associated-types" class="small-section-header">Required Associated Types<a href="#required-associated-types" class="anchor">§</a></h2><div class="methods"><details class="toggle" open><summary><section id="associatedtype.Reader" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#60">source</a><h4 class="code-header">type <a href="#associatedtype.Reader" class="associatedtype">Reader</a>: <a class="trait" href="oio/tra [...]
-</div></details><details class="toggle" open><summary><section id="associatedtype.BlockingReader" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#63">source</a><h4 class="code-header">type <a href="#associatedtype.BlockingReader" class="associatedtype">BlockingReader</a>: <a class="trait" href="oio/trait.BlockingRead.html" title="trait opendal::raw::oio::BlockingRead">BlockingRead</a></h4></section></summary><div class="docblock"><p>BlockingReader [...]
+</div></details><h2 id="required-associated-types" class="small-section-header">Required Associated Types<a href="#required-associated-types" class="anchor">§</a></h2><div class="methods"><details class="toggle" open><summary><section id="associatedtype.Reader" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#59">source</a><h4 class="code-header">type <a href="#associatedtype.Reader" class="associatedtype">Reader</a>: <a class="trait" href="oio/tra [...]
+</div></details><details class="toggle" open><summary><section id="associatedtype.BlockingReader" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#62">source</a><h4 class="code-header">type <a href="#associatedtype.BlockingReader" class="associatedtype">BlockingReader</a>: <a class="trait" href="oio/trait.BlockingRead.html" title="trait opendal::raw::oio::BlockingRead">BlockingRead</a></h4></section></summary><div class="docblock"><p>BlockingReader [...]
 <code>blocking_read</code> operation.</p>
-</div></details><details class="toggle" open><summary><section id="associatedtype.Writer" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#65">source</a><h4 class="code-header">type <a href="#associatedtype.Writer" class="associatedtype">Writer</a>: <a class="trait" href="oio/trait.Write.html" title="trait opendal::raw::oio::Write">Write</a></h4></section></summary><div class="docblock"><p>Writer is the associated writer the could return in <code>w [...]
-</div></details><details class="toggle" open><summary><section id="associatedtype.BlockingWriter" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#68">source</a><h4 class="code-header">type <a href="#associatedtype.BlockingWriter" class="associatedtype">BlockingWriter</a>: <a class="trait" href="oio/trait.BlockingWrite.html" title="trait opendal::raw::oio::BlockingWrite">BlockingWrite</a></h4></section></summary><div class="docblock"><p>BlockingWri [...]
+</div></details><details class="toggle" open><summary><section id="associatedtype.Writer" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#64">source</a><h4 class="code-header">type <a href="#associatedtype.Writer" class="associatedtype">Writer</a>: <a class="trait" href="oio/trait.Write.html" title="trait opendal::raw::oio::Write">Write</a></h4></section></summary><div class="docblock"><p>Writer is the associated writer the could return in <code>w [...]
+</div></details><details class="toggle" open><summary><section id="associatedtype.BlockingWriter" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#67">source</a><h4 class="code-header">type <a href="#associatedtype.BlockingWriter" class="associatedtype">BlockingWriter</a>: <a class="trait" href="oio/trait.BlockingWrite.html" title="trait opendal::raw::oio::BlockingWrite">BlockingWrite</a></h4></section></summary><div class="docblock"><p>BlockingWri [...]
 <code>blocking_write</code> operation.</p>
-</div></details><details class="toggle" open><summary><section id="associatedtype.Pager" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#70">source</a><h4 class="code-header">type <a href="#associatedtype.Pager" class="associatedtype">Pager</a>: <a class="trait" href="oio/trait.Page.html" title="trait opendal::raw::oio::Page">Page</a></h4></section></summary><div class="docblock"><p>Pager is the associated page that return in <code>list</code> ope [...]
-</div></details><details class="toggle" open><summary><section id="associatedtype.BlockingPager" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#73">source</a><h4 class="code-header">type <a href="#associatedtype.BlockingPager" class="associatedtype">BlockingPager</a>: <a class="trait" href="oio/trait.BlockingPage.html" title="trait opendal::raw::oio::BlockingPage">BlockingPage</a></h4></section></summary><div class="docblock"><p>BlockingPager is  [...]
+</div></details><details class="toggle" open><summary><section id="associatedtype.Pager" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#69">source</a><h4 class="code-header">type <a href="#associatedtype.Pager" class="associatedtype">Pager</a>: <a class="trait" href="oio/trait.Page.html" title="trait opendal::raw::oio::Page">Page</a></h4></section></summary><div class="docblock"><p>Pager is the associated page that return in <code>list</code> ope [...]
+</div></details><details class="toggle" open><summary><section id="associatedtype.BlockingPager" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#72">source</a><h4 class="code-header">type <a href="#associatedtype.BlockingPager" class="associatedtype">BlockingPager</a>: <a class="trait" href="oio/trait.BlockingPage.html" title="trait opendal::raw::oio::BlockingPage">BlockingPage</a></h4></section></summary><div class="docblock"><p>BlockingPager is  [...]
 <code>blocking_list</code> operation.</p>
-</div></details><details class="toggle" open><summary><section id="associatedtype.Appender" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#75">source</a><h4 class="code-header">type <a href="#associatedtype.Appender" class="associatedtype">Appender</a>: <a class="trait" href="oio/trait.Append.html" title="trait opendal::raw::oio::Append">Append</a></h4></section></summary><div class="docblock"><p>Appender is the associated appender that could ret [...]
-</div></details></div><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="tymethod.info" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#88">source</a><h4 class="code-header">fn <a href="#tymethod.info" class="fn">info</a>(&amp;self) -&gt; <a class="struct" href="struct.AccessorInfo.html" tit [...]
+</div></details><details class="toggle" open><summary><section id="associatedtype.Appender" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#74">source</a><h4 class="code-header">type <a href="#associatedtype.Appender" class="associatedtype">Appender</a>: <a class="trait" href="oio/trait.Append.html" title="trait opendal::raw::oio::Append">Append</a></h4></section></summary><div class="docblock"><p>Appender is the associated appender that could ret [...]
+</div></details></div><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="tymethod.info" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#87">source</a><h4 class="code-header">fn <a href="#tymethod.info" class="fn">info</a>(&amp;self) -&gt; <a class="struct" href="struct.AccessorInfo.html" tit [...]
 <h5 id="notes"><a href="#notes">Notes</a></h5>
 <p>This function is required to be implemented.</p>
 <p>By returning AccessorInfo, underlying services can declare
@@ -183,10 +183,10 @@ some useful information about it self.</p>
 <li>scheme: declare the scheme of backend.</li>
 <li>capabilities: declare the capabilities of current backend.</li>
 </ul>
-</div></details></div><h2 id="provided-methods" class="small-section-header">Provided Methods<a href="#provided-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="method.create_dir" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#98-105">source</a><h4 class="code-header">fn <a href="#method.create_dir" class="fn">create_dir</a>&lt;'life0, 'life1, 'async_trait&gt;(
+</div></details></div><h2 id="provided-methods" class="small-section-header">Provided Methods<a href="#provided-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="method.create_dir" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#97-104">source</a><h4 class="code-header">fn <a href="#method.create_dir" class="fn">create_dir</a>&lt;'life0, 'life1, 'async_trait&gt;(
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpCreateDir.html" title="struct opendal::ops::OpCreateDir">OpCreateDir</a>
+    args: <a class="struct" href="struct.OpCreateDir.html" title="struct opendal::raw::OpCreateDir">OpCreateDir</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
     'life0: 'async_trait,
@@ -197,10 +197,10 @@ some useful information about it self.</p>
 <li>Input path MUST match with EntryMode, DON’T NEED to check mode.</li>
 <li>Create on existing dir SHOULD succeed.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.read" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#116-123">source</a><h4 class="code-header">fn <a href="#method.read" class="fn">read</a>&lt;'life0, 'life1, 'async_trait&gt;(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.read" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#115-122">source</a><h4 class="code-header">fn <a href="#method.read" class="fn">read</a>&lt;'life0, 'life1, 'async_trait&gt;(
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpRead.html" title="struct opendal::ops::OpRead">OpRead</a>
+    args: <a class="struct" href="struct.OpRead.html" title="struct opendal::raw::OpRead">OpRead</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
     'life0: 'async_trait,
@@ -212,10 +212,10 @@ some useful information about it self.</p>
 <li>Input path MUST be file path, DON’T NEED to check mode.</li>
 <li>The returning content length may be smaller than the range specified.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.write" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#133-140">source</a><h4 class="code-header">fn <a href="#method.write" class="fn">write</a>&lt;'life0, 'life1, 'async_trait&gt;(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.write" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#132-139">source</a><h4 class="code-header">fn <a href="#method.write" class="fn">write</a>&lt;'life0, 'life1, 'async_trait&gt;(
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpWrite.html" title="struct opendal::ops::OpWrite">OpWrite</a>
+    args: <a class="struct" href="struct.OpWrite.html" title="struct opendal::raw::OpWrite">OpWrite</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
     'life0: 'async_trait,
@@ -226,10 +226,10 @@ written size if operate successful.</p>
 <ul>
 <li>Input path MUST be file path, DON’T NEED to check mode.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.append" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#150-157">source</a><h4 class="code-header">fn <a href="#method.append" class="fn">append</a>&lt;'life0, 'life1, 'async_trait&gt;(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.append" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#149-156">source</a><h4 class="code-header">fn <a href="#method.append" class="fn">append</a>&lt;'life0, 'life1, 'async_trait&gt;(
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpAppend.html" title="struct opendal::ops::OpAppend">OpAppend</a>
+    args: <a class="struct" href="struct.OpAppend.html" title="struct opendal::raw::OpAppend">OpAppend</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
     'life0: 'async_trait,
@@ -240,11 +240,11 @@ appended size if operate successful.</p>
 <ul>
 <li>Input path MUST be file path, DON’T NEED to check mode.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.copy" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#168-175">source</a><h4 class="code-header">fn <a href="#method.copy" class="fn">copy</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.copy" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#167-174">source</a><h4 class="code-header">fn <a href="#method.copy" class="fn">copy</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(
     &amp;'life0 self,
     from: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
     to: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpCopy.html" title="struct opendal::ops::OpCopy">OpCopy</a>
+    args: <a class="struct" href="struct.OpCopy.html" title="struct opendal::raw::OpCopy">OpCopy</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
     'life0: 'async_trait,
@@ -257,21 +257,21 @@ appended size if operate successful.</p>
 <li>Copy on existing file SHOULD succeed.</li>
 <li>Copy on existing file SHOULD overwrite and truncate.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.rename" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#180-187">source</a><h4 class="code-header">fn <a href="#method.rename" class="fn">rename</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.rename" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#179-186">source</a><h4 class="code-header">fn <a href="#method.rename" class="fn">rename</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(
     &amp;'life0 self,
     from: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
     to: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpRename.html" title="struct opendal::ops::OpRename">OpRename</a>
+    args: <a class="struct" href="struct.OpRename.html" title="struct opendal::raw::OpRename">OpRename</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,
     'life2: 'async_trait,</span></h4></section></summary><div class="docblock"><p>Invoke the <code>rename</code> operation on the specified <code>from</code> path and <code>to</code> path.</p>
 <p>Require <a href="../struct.Capability.html#structfield.rename" title="field opendal::Capability::rename">Capability::rename</a></p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.stat" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#198-205">source</a><h4 class="code-header">fn <a href="#method.stat" class="fn">stat</a>&lt;'life0, 'life1, 'async_trait&gt;(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.stat" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#197-204">source</a><h4 class="code-header">fn <a href="#method.stat" class="fn">stat</a>&lt;'life0, 'life1, 'async_trait&gt;(
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpStat.html" title="struct opendal::ops::OpStat">OpStat</a>
+    args: <a class="struct" href="struct.OpStat.html" title="struct opendal::raw::OpStat">OpStat</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
     'life0: 'async_trait,
@@ -283,10 +283,10 @@ appended size if operate successful.</p>
 <li><code>stat</code> a path endswith “/” means stating a dir.</li>
 <li><code>mode</code> and <code>content_length</code> must be set.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.delete" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#215-222">source</a><h4 class="code-header">fn <a href="#method.delete" class="fn">delete</a>&lt;'life0, 'life1, 'async_trait&gt;(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.delete" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#214-221">source</a><h4 class="code-header">fn <a href="#method.delete" class="fn">delete</a>&lt;'life0, 'life1, 'async_trait&gt;(
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpDelete.html" title="struct opendal::ops::OpDelete">OpDelete</a>
+    args: <a class="struct" href="struct.OpDelete.html" title="struct opendal::raw::OpDelete">OpDelete</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
     'life0: 'async_trait,
@@ -297,10 +297,10 @@ appended size if operate successful.</p>
 <li><code>delete</code> is an idempotent operation, it’s safe to call <code>Delete</code> on the same path multiple times.</li>
 <li><code>delete</code> SHOULD return <code>Ok(())</code> if the path is deleted successfully or not exist.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.list" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#232-239">source</a><h4 class="code-header">fn <a href="#method.list" class="fn">list</a>&lt;'life0, 'life1, 'async_trait&gt;(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.list" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#231-238">source</a><h4 class="code-header">fn <a href="#method.list" class="fn">list</a>&lt;'life0, 'life1, 'async_trait&gt;(
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpList.html" title="struct opendal::ops::OpList">OpList</a>
+    args: <a class="struct" href="struct.OpList.html" title="struct opendal::raw::OpList">OpList</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
     'life0: 'async_trait,
@@ -311,10 +311,10 @@ appended size if operate successful.</p>
 <li>Input path MUST be dir path, DON’T NEED to check mode.</li>
 <li>List non-exist dir should return Empty.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.presign" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#248-255">source</a><h4 class="code-header">fn <a href="#method.presign" class="fn">presign</a>&lt;'life0, 'life1, 'async_trait&gt;(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.presign" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#247-254">source</a><h4 class="code-header">fn <a href="#method.presign" class="fn">presign</a>&lt;'life0, 'life1, 'async_trait&gt;(
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpPresign.html" title="struct opendal::ops::OpPresign">OpPresign</a>
+    args: <a class="struct" href="struct.OpPresign.html" title="struct opendal::raw::OpPresign">OpPresign</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
     'life0: 'async_trait,
@@ -324,50 +324,50 @@ appended size if operate successful.</p>
 <ul>
 <li>This API is optional, return <a href="https://doc.rust-lang.org/1.69.0/std/io/error/enum.ErrorKind.html#variant.Unsupported" title="variant std::io::error::ErrorKind::Unsupported"><code>std::io::ErrorKind::Unsupported</code></a> if not supported.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.batch" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#260-267">source</a><h4 class="code-header">fn <a href="#method.batch" class="fn">batch</a>&lt;'life0, 'async_trait&gt;(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.batch" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#259-266">source</a><h4 class="code-header">fn <a href="#method.batch" class="fn">batch</a>&lt;'life0, 'async_trait&gt;(
     &amp;'life0 self,
-    args: <a class="struct" href="../ops/struct.OpBatch.html" title="struct opendal::ops::OpBatch">OpBatch</a>
+    args: <a class="struct" href="struct.OpBatch.html" title="struct opendal::raw::OpBatch">OpBatch</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
     'life0: 'async_trait,</span></h4></section></summary><div class="docblock"><p>Invoke the <code>batch</code> operations.</p>
 <p>Require <a href="../struct.Capability.html#structfield.batch" title="field opendal::Capability::batch"><code>Capability::batch</code></a></p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_create_dir" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#274-281">source</a><h4 class="code-header">fn <a href="#method.blocking_create_dir" class="fn">blocking_create_dir</a>(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_create_dir" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#273-280">source</a><h4 class="code-header">fn <a href="#method.blocking_create_dir" class="fn">blocking_create_dir</a>(
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpCreateDir.html" title="struct opendal::ops::OpCreateDir">OpCreateDir</a>
+    args: <a class="struct" href="struct.OpCreateDir.html" title="struct opendal::raw::OpCreateDir">OpCreateDir</a>
 ) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="struct" href="struct.RpCreateDir.html" title="struct opendal::raw::RpCreateDir">RpCreateDir</a>&gt;</h4></section></summary><div class="docblock"><p>Invoke the <code>blocking_create</code> operation on the specified path.</p>
 <p>This operation is the blocking version of <a href="trait.Accessor.html#method.create_dir" title="method opendal::raw::Accessor::create_dir"><code>Accessor::create_dir</code></a></p>
 <p>Require <a href="../struct.Capability.html#structfield.create_dir" title="field opendal::Capability::create_dir"><code>Capability::create_dir</code></a> and <a href="../struct.Capability.html#structfield.blocking" title="field opendal::Capability::blocking"><code>Capability::blocking</code></a></p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_read" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#288-295">source</a><h4 class="code-header">fn <a href="#method.blocking_read" class="fn">blocking_read</a>(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_read" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#287-294">source</a><h4 class="code-header">fn <a href="#method.blocking_read" class="fn">blocking_read</a>(
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpRead.html" title="struct opendal::ops::OpRead">OpRead</a>
+    args: <a class="struct" href="struct.OpRead.html" title="struct opendal::raw::OpRead">OpRead</a>
 ) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="struct.RpRead.html" title="struct opendal::raw::RpRead">RpRead</a>, Self::<a class="associatedtype" href="trait.Accessor.html#associatedtype.BlockingReader" title="type opendal::raw::Accessor::BlockingReader">BlockingReader</a>)&gt;</h4></section></summary><div class="docblock"><p>Invoke the <code>blocking_read</code> operation on the specified path.</p>
 <p>This operation is the blocking version of <a href="trait.Accessor.html#method.read" title="method opendal::raw::Accessor::read"><code>Accessor::read</code></a></p>
 <p>Require <a href="../struct.Capability.html#structfield.read" title="field opendal::Capability::read"><code>Capability::read</code></a> and <a href="../struct.Capability.html#structfield.blocking" title="field opendal::Capability::blocking"><code>Capability::blocking</code></a></p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_write" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#302-309">source</a><h4 class="code-header">fn <a href="#method.blocking_write" class="fn">blocking_write</a>(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_write" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#301-308">source</a><h4 class="code-header">fn <a href="#method.blocking_write" class="fn">blocking_write</a>(
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpWrite.html" title="struct opendal::ops::OpWrite">OpWrite</a>
+    args: <a class="struct" href="struct.OpWrite.html" title="struct opendal::raw::OpWrite">OpWrite</a>
 ) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="struct.RpWrite.html" title="struct opendal::raw::RpWrite">RpWrite</a>, Self::<a class="associatedtype" href="trait.Accessor.html#associatedtype.BlockingWriter" title="type opendal::raw::Accessor::BlockingWriter">BlockingWriter</a>)&gt;</h4></section></summary><div class="docblock"><p>Invoke the <code>blocking_write</code> operation on the specified path.</p>
 <p>This operation is the blocking version of <a href="trait.Accessor.html#method.write" title="method opendal::raw::Accessor::write"><code>Accessor::write</code></a></p>
 <p>Require <a href="../struct.Capability.html#structfield.write" title="field opendal::Capability::write"><code>Capability::write</code></a> and <a href="../struct.Capability.html#structfield.blocking" title="field opendal::Capability::blocking"><code>Capability::blocking</code></a></p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_copy" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#316-323">source</a><h4 class="code-header">fn <a href="#method.blocking_copy" class="fn">blocking_copy</a>(&amp;self, from: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, to: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primi [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_copy" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#315-322">source</a><h4 class="code-header">fn <a href="#method.blocking_copy" class="fn">blocking_copy</a>(&amp;self, from: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, to: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primi [...]
 <p>This operation is the blocking version of <a href="trait.Accessor.html#method.copy" title="method opendal::raw::Accessor::copy"><code>Accessor::copy</code></a></p>
 <p>Require <a href="../struct.Capability.html#structfield.copy" title="field opendal::Capability::copy"><code>Capability::copy</code></a> and <a href="../struct.Capability.html#structfield.blocking" title="field opendal::Capability::blocking"><code>Capability::blocking</code></a></p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_rename" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#330-337">source</a><h4 class="code-header">fn <a href="#method.blocking_rename" class="fn">blocking_rename</a>(&amp;self, from: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, to: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_rename" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#329-336">source</a><h4 class="code-header">fn <a href="#method.blocking_rename" class="fn">blocking_rename</a>(&amp;self, from: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, to: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std [...]
 <p>This operation is the blocking version of <a href="trait.Accessor.html#method.rename" title="method opendal::raw::Accessor::rename"><code>Accessor::rename</code></a></p>
 <p>Require <a href="../struct.Capability.html#structfield.rename" title="field opendal::Capability::rename"><code>Capability::rename</code></a> and <a href="../struct.Capability.html#structfield.blocking" title="field opendal::Capability::blocking"><code>Capability::blocking</code></a></p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_stat" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#344-351">source</a><h4 class="code-header">fn <a href="#method.blocking_stat" class="fn">blocking_stat</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, args: <a class="struct" href="../ops/struct.OpStat.html" title="struct opendal [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_stat" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#343-350">source</a><h4 class="code-header">fn <a href="#method.blocking_stat" class="fn">blocking_stat</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, args: <a class="struct" href="struct.OpStat.html" title="struct opendal::raw:: [...]
 <p>This operation is the blocking version of <a href="trait.Accessor.html#method.stat" title="method opendal::raw::Accessor::stat"><code>Accessor::stat</code></a></p>
 <p>Require <a href="../struct.Capability.html#structfield.stat" title="field opendal::Capability::stat"><code>Capability::stat</code></a> and <a href="../struct.Capability.html#structfield.blocking" title="field opendal::Capability::blocking"><code>Capability::blocking</code></a></p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_delete" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#358-365">source</a><h4 class="code-header">fn <a href="#method.blocking_delete" class="fn">blocking_delete</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, args: <a class="struct" href="../ops/struct.OpDelete.html" title="struct [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_delete" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#357-364">source</a><h4 class="code-header">fn <a href="#method.blocking_delete" class="fn">blocking_delete</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, args: <a class="struct" href="struct.OpDelete.html" title="struct openda [...]
 <p>This operation is the blocking version of <a href="trait.Accessor.html#method.delete" title="method opendal::raw::Accessor::delete"><code>Accessor::delete</code></a></p>
 <p>Require <a href="../struct.Capability.html#structfield.write" title="field opendal::Capability::write"><code>Capability::write</code></a> and <a href="../struct.Capability.html#structfield.blocking" title="field opendal::Capability::blocking"><code>Capability::blocking</code></a></p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_list" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#376-383">source</a><h4 class="code-header">fn <a href="#method.blocking_list" class="fn">blocking_list</a>(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.blocking_list" class="method"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#375-382">source</a><h4 class="code-header">fn <a href="#method.blocking_list" class="fn">blocking_list</a>(
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpList.html" title="struct opendal::ops::OpList">OpList</a>
+    args: <a class="struct" href="struct.OpList.html" title="struct opendal::raw::OpList">OpList</a>
 ) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="struct.RpList.html" title="struct opendal::raw::RpList">RpList</a>, Self::<a class="associatedtype" href="trait.Accessor.html#associatedtype.BlockingPager" title="type opendal::raw::Accessor::BlockingPager">BlockingPager</a>)&gt;</h4></section></summary><div class="docblock"><p>Invoke the <code>blocking_list</code> operation on the specified path.</p>
 <p>This operation is the blocking version of <a href="trait.Accessor.html#method.list" title="method opendal::raw::Accessor::list"><code>Accessor::list</code></a></p>
 <p>Require <a href="../struct.Capability.html#structfield.list" title="field opendal::Capability::list"><code>Capability::list</code></a> and <a href="../struct.Capability.html#structfield.blocking" title="field opendal::Capability::blocking"><code>Capability::blocking</code></a></p>
@@ -375,102 +375,102 @@ appended size if operate successful.</p>
 <ul>
 <li>List non-exist dir should return Empty.</li>
 </ul>
-</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-Accessor-for-()" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#388-405">source</a><a href="#impl-Accessor-for-()" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Accessor.html" title="trait open [...]
-</div><div class="impl-items"><section id="associatedtype.Reader-1" class="associatedtype trait-impl"><a href="#associatedtype.Reader-1" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Reader" class="associatedtype">Reader</a> = <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.unit.html">()</a></h4></section><section id="associatedtype.BlockingReader-1" class="associatedtype trait-impl"><a href="#associatedtype.BlockingReader-1" class="a [...]
+</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-Accessor-for-()" class="impl"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#387-404">source</a><a href="#impl-Accessor-for-()" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Accessor.html" title="trait open [...]
+</div><div class="impl-items"><section id="associatedtype.Reader-1" class="associatedtype trait-impl"><a href="#associatedtype.Reader-1" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Reader" class="associatedtype">Reader</a> = <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.unit.html">()</a></h4></section><section id="associatedtype.BlockingReader-1" class="associatedtype trait-impl"><a href="#associatedtype.BlockingReader-1" class="a [...]
 <code>Accessor</code> for <code>Arc&lt;dyn Accessor&gt;</code>.</p>
-</div><div class="impl-items"><section id="associatedtype.Reader-2" class="associatedtype trait-impl"><a href="#associatedtype.Reader-2" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Reader" class="associatedtype">Reader</a> = &lt;T as <a class="trait" href="trait.Accessor.html" title="trait opendal::raw::Accessor">Accessor</a>&gt;::<a class="associatedtype" href="trait.Accessor.html#associatedtype.Reader" title="type opendal::raw::Accessor::Reader">Reader</a> [...]
+</div><div class="impl-items"><section id="associatedtype.Reader-2" class="associatedtype trait-impl"><a href="#associatedtype.Reader-2" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Reader" class="associatedtype">Reader</a> = &lt;T as <a class="trait" href="trait.Accessor.html" title="trait opendal::raw::Accessor">Accessor</a>&gt;::<a class="associatedtype" href="trait.Accessor.html#associatedtype.Reader" title="type opendal::raw::Accessor::Reader">Reader</a> [...]
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpCreateDir.html" title="struct opendal::ops::OpCreateDir">OpCreateDir</a>
+    args: <a class="struct" href="struct.OpCreateDir.html" title="struct opendal::raw::OpCreateDir">OpCreateDir</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section><section id="method.read-1" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#427-429">source</a><a href="#method.read-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.read" class="fn">read</a>&lt;'life0, 'life1, 'async_trait&gt;(
+    'life1: 'async_trait,</span></h4></section><section id="method.read-1" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#426-428">source</a><a href="#method.read-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.read" class="fn">read</a>&lt;'life0, 'life1, 'async_trait&gt;(
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpRead.html" title="struct opendal::ops::OpRead">OpRead</a>
+    args: <a class="struct" href="struct.OpRead.html" title="struct opendal::raw::OpRead">OpRead</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section><section id="method.write-1" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#430-432">source</a><a href="#method.write-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.write" class="fn">write</a>&lt;'life0, 'life1, 'async_trait&gt;(
+    'life1: 'async_trait,</span></h4></section><section id="method.write-1" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#429-431">source</a><a href="#method.write-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.write" class="fn">write</a>&lt;'life0, 'life1, 'async_trait&gt;(
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpWrite.html" title="struct opendal::ops::OpWrite">OpWrite</a>
+    args: <a class="struct" href="struct.OpWrite.html" title="struct opendal::raw::OpWrite">OpWrite</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section><section id="method.append-1" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#434-436">source</a><a href="#method.append-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.append" class="fn">append</a>&lt;'life0, 'life1, 'async_trait&gt;(
+    'life1: 'async_trait,</span></h4></section><section id="method.append-1" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#433-435">source</a><a href="#method.append-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.append" class="fn">append</a>&lt;'life0, 'life1, 'async_trait&gt;(
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpAppend.html" title="struct opendal::ops::OpAppend">OpAppend</a>
+    args: <a class="struct" href="struct.OpAppend.html" title="struct opendal::raw::OpAppend">OpAppend</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section><section id="method.copy-1" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#438-440">source</a><a href="#method.copy-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.copy" class="fn">copy</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(
+    'life1: 'async_trait,</span></h4></section><section id="method.copy-1" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#437-439">source</a><a href="#method.copy-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.copy" class="fn">copy</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(
     &amp;'life0 self,
     from: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
     to: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpCopy.html" title="struct opendal::ops::OpCopy">OpCopy</a>
+    args: <a class="struct" href="struct.OpCopy.html" title="struct opendal::raw::OpCopy">OpCopy</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,
-    'life2: 'async_trait,</span></h4></section><section id="method.rename-1" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#442-444">source</a><a href="#method.rename-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.rename" class="fn">rename</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(
+    'life2: 'async_trait,</span></h4></section><section id="method.rename-1" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#441-443">source</a><a href="#method.rename-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.rename" class="fn">rename</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(
     &amp;'life0 self,
     from: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
     to: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpRename.html" title="struct opendal::ops::OpRename">OpRename</a>
+    args: <a class="struct" href="struct.OpRename.html" title="struct opendal::raw::OpRename">OpRename</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,
-    'life2: 'async_trait,</span></h4></section><section id="method.stat-1" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#446-448">source</a><a href="#method.stat-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.stat" class="fn">stat</a>&lt;'life0, 'life1, 'async_trait&gt;(
+    'life2: 'async_trait,</span></h4></section><section id="method.stat-1" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#445-447">source</a><a href="#method.stat-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.stat" class="fn">stat</a>&lt;'life0, 'life1, 'async_trait&gt;(
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpStat.html" title="struct opendal::ops::OpStat">OpStat</a>
+    args: <a class="struct" href="struct.OpStat.html" title="struct opendal::raw::OpStat">OpStat</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section><section id="method.delete-1" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#449-451">source</a><a href="#method.delete-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.delete" class="fn">delete</a>&lt;'life0, 'life1, 'async_trait&gt;(
+    'life1: 'async_trait,</span></h4></section><section id="method.delete-1" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#448-450">source</a><a href="#method.delete-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.delete" class="fn">delete</a>&lt;'life0, 'life1, 'async_trait&gt;(
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpDelete.html" title="struct opendal::ops::OpDelete">OpDelete</a>
+    args: <a class="struct" href="struct.OpDelete.html" title="struct opendal::raw::OpDelete">OpDelete</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section><section id="method.list-1" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#452-454">source</a><a href="#method.list-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.list" class="fn">list</a>&lt;'life0, 'life1, 'async_trait&gt;(
+    'life1: 'async_trait,</span></h4></section><section id="method.list-1" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#451-453">source</a><a href="#method.list-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.list" class="fn">list</a>&lt;'life0, 'life1, 'async_trait&gt;(
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpList.html" title="struct opendal::ops::OpList">OpList</a>
+    args: <a class="struct" href="struct.OpList.html" title="struct opendal::raw::OpList">OpList</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section><section id="method.batch-1" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#456-458">source</a><a href="#method.batch-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.batch" class="fn">batch</a>&lt;'life0, 'async_trait&gt;(
+    'life1: 'async_trait,</span></h4></section><section id="method.batch-1" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#455-457">source</a><a href="#method.batch-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.batch" class="fn">batch</a>&lt;'life0, 'async_trait&gt;(
     &amp;'life0 self,
-    args: <a class="struct" href="../ops/struct.OpBatch.html" title="struct opendal::ops::OpBatch">OpBatch</a>
+    args: <a class="struct" href="struct.OpBatch.html" title="struct opendal::raw::OpBatch">OpBatch</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
-    'life0: 'async_trait,</span></h4></section><section id="method.presign-1" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#460-462">source</a><a href="#method.presign-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.presign" class="fn">presign</a>&lt;'life0, 'life1, 'async_trait&gt;(
+    'life0: 'async_trait,</span></h4></section><section id="method.presign-1" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#459-461">source</a><a href="#method.presign-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.presign" class="fn">presign</a>&lt;'life0, 'life1, 'async_trait&gt;(
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpPresign.html" title="struct opendal::ops::OpPresign">OpPresign</a>
+    args: <a class="struct" href="struct.OpPresign.html" title="struct opendal::raw::OpPresign">OpPresign</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section><section id="method.blocking_create_dir-1" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#464-466">source</a><a href="#method.blocking_create_dir-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.blocking_create_dir" class="fn">blocking_create_dir</a>(
+    'life1: 'async_trait,</span></h4></section><section id="method.blocking_create_dir-1" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#463-465">source</a><a href="#method.blocking_create_dir-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.blocking_create_dir" class="fn">blocking_create_dir</a>(
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpCreateDir.html" title="struct opendal::ops::OpCreateDir">OpCreateDir</a>
-) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="struct" href="struct.RpCreateDir.html" title="struct opendal::raw::RpCreateDir">RpCreateDir</a>&gt;</h4></section><section id="method.blocking_read-1" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#467-469">source</a><a href="#method.blocking_read-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.blocking_read" class [...]
+    args: <a class="struct" href="struct.OpCreateDir.html" title="struct opendal::raw::OpCreateDir">OpCreateDir</a>
+) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="struct" href="struct.RpCreateDir.html" title="struct opendal::raw::RpCreateDir">RpCreateDir</a>&gt;</h4></section><section id="method.blocking_read-1" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/raw/accessor.rs.html#466-468">source</a><a href="#method.blocking_read-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.blocking_read" class [...]
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpRead.html" title="struct opendal::ops::OpRead">OpRead</a>
-) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="struct.RpRead.html" title="struct opendal::raw::RpRead">RpRead</a>, Self::<a class="associatedtype" href="trait.Accessor.html#associatedtype.BlockingReader" title="type opendal::raw::Accessor::BlockingReader">BlockingReader</a>)&gt;</h4></section><section id="method.blocking_write-1" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/raw/acces [...]
+    args: <a class="struct" href="struct.OpRead.html" title="struct opendal::raw::OpRead">OpRead</a>
+) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="struct.RpRead.html" title="struct opendal::raw::RpRead">RpRead</a>, Self::<a class="associatedtype" href="trait.Accessor.html#associatedtype.BlockingReader" title="type opendal::raw::Accessor::BlockingReader">BlockingReader</a>)&gt;</h4></section><section id="method.blocking_write-1" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/raw/acces [...]
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpWrite.html" title="struct opendal::ops::OpWrite">OpWrite</a>
-) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="struct.RpWrite.html" title="struct opendal::raw::RpWrite">RpWrite</a>, Self::<a class="associatedtype" href="trait.Accessor.html#associatedtype.BlockingWriter" title="type opendal::raw::Accessor::BlockingWriter">BlockingWriter</a>)&gt;</h4></section><section id="method.blocking_copy-1" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/raw/acc [...]
+    args: <a class="struct" href="struct.OpWrite.html" title="struct opendal::raw::OpWrite">OpWrite</a>
+) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="struct.RpWrite.html" title="struct opendal::raw::RpWrite">RpWrite</a>, Self::<a class="associatedtype" href="trait.Accessor.html#associatedtype.BlockingWriter" title="type opendal::raw::Accessor::BlockingWriter">BlockingWriter</a>)&gt;</h4></section><section id="method.blocking_copy-1" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/raw/acc [...]
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpList.html" title="struct opendal::ops::OpList">OpList</a>
-) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="struct.RpList.html" title="struct opendal::raw::RpList">RpList</a>, Self::<a class="associatedtype" href="trait.Accessor.html#associatedtype.BlockingPager" title="type opendal::raw::Accessor::BlockingPager">BlockingPager</a>)&gt;</h4></section></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2>< [...]
\ No newline at end of file
+    args: <a class="struct" href="struct.OpList.html" title="struct opendal::raw::OpList">OpList</a>
+) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="struct.RpList.html" title="struct opendal::raw::RpList">RpList</a>, Self::<a class="associatedtype" href="trait.Accessor.html#associatedtype.BlockingPager" title="type opendal::raw::Accessor::BlockingPager">BlockingPager</a>)&gt;</h4></section></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2>< [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/trait.Layer.html b/docs/rust/opendal/raw/trait.Layer.html
index 73b776f0..0550024d 100644
--- a/docs/rust/opendal/raw/trait.Layer.html
+++ b/docs/rust/opendal/raw/trait.Layer.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Layer is used to intercept the operations on the underlying storage."><title>Layer in opendal::raw - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/ [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Layer is used to intercept the operations on the underlying storage."><title>Layer in opendal::raw - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/ [...]
     type <a href="#associatedtype.LayeredAccessor" class="associatedtype">LayeredAccessor</a>: <a class="trait" href="trait.Accessor.html" title="trait opendal::raw::Accessor">Accessor</a>;
 
     // Required method
@@ -16,7 +16,6 @@ requires <code>Send</code> and <code>Sync</code>.</p>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::sync::Arc;
 
 <span class="kw">use </span>async_trait::async_trait;
-<span class="kw">use </span>opendal::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span>opendal::raw::<span class="kw-2">*</span>;
 <span class="kw">use </span>opendal::<span class="kw-2">*</span>;
 
@@ -90,6 +89,6 @@ requires <code>Send</code> and <code>Sync</code>.</p>
         TraceAccessor { inner }
     }
 }</code></pre></div>
-</div></details><h2 id="required-associated-types" class="small-section-header">Required Associated Types<a href="#required-associated-types" class="anchor">§</a></h2><div class="methods"><details class="toggle" open><summary><section id="associatedtype.LayeredAccessor" class="method"><a class="srclink rightside" href="../../src/opendal/raw/layer.rs.html#126">source</a><h4 class="code-header">type <a href="#associatedtype.LayeredAccessor" class="associatedtype">LayeredAccessor</a>: <a cl [...]
-</div></details></div><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="tymethod.layer" class="method"><a class="srclink rightside" href="../../src/opendal/raw/layer.rs.html#129">source</a><h4 class="code-header">fn <a href="#tymethod.layer" class="fn">layer</a>(&amp;self, inner: A) -&gt; Self::<a class="associatedtype" href="trai [...]
-</div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><details class="toggle implementors-toggle"><summary><section id="impl-Layer%3CA%3E-for-ChaosLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/chaos.rs.html#83-93">source</a><a href="#impl-Layer%3CA%3E-for-ChaosLayer" class="anchor">§</a><h3 class="code-header">impl&lt;A: <a class="trait" href="trai [...]
\ No newline at end of file
+</div></details><h2 id="required-associated-types" class="small-section-header">Required Associated Types<a href="#required-associated-types" class="anchor">§</a></h2><div class="methods"><details class="toggle" open><summary><section id="associatedtype.LayeredAccessor" class="method"><a class="srclink rightside" href="../../src/opendal/raw/layer.rs.html#124">source</a><h4 class="code-header">type <a href="#associatedtype.LayeredAccessor" class="associatedtype">LayeredAccessor</a>: <a cl [...]
+</div></details></div><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="tymethod.layer" class="method"><a class="srclink rightside" href="../../src/opendal/raw/layer.rs.html#127">source</a><h4 class="code-header">fn <a href="#tymethod.layer" class="fn">layer</a>(&amp;self, inner: A) -&gt; Self::<a class="associatedtype" href="trai [...]
+</div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><details class="toggle implementors-toggle"><summary><section id="impl-Layer%3CA%3E-for-ChaosLayer" class="impl"><a class="srclink rightside" href="../../src/opendal/layers/chaos.rs.html#82-92">source</a><a href="#impl-Layer%3CA%3E-for-ChaosLayer" class="anchor">§</a><h3 class="code-header">impl&lt;A: <a class="trait" href="trai [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/trait.LayeredAccessor.html b/docs/rust/opendal/raw/trait.LayeredAccessor.html
index b3d800d3..3a284d9a 100644
--- a/docs/rust/opendal/raw/trait.LayeredAccessor.html
+++ b/docs/rust/opendal/raw/trait.LayeredAccessor.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="LayeredAccessor is layered accessor that forward all not implemented method to inner."><title>LayeredAccessor in opendal::raw - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="pre [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="LayeredAccessor is layered accessor that forward all not implemented method to inner."><title>LayeredAccessor in opendal::raw - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="pre [...]
     type <a href="#associatedtype.Inner" class="associatedtype">Inner</a>: <a class="trait" href="trait.Accessor.html" title="trait opendal::raw::Accessor">Accessor</a>;
     type <a href="#associatedtype.Reader" class="associatedtype">Reader</a>: <a class="trait" href="oio/trait.Read.html" title="trait opendal::raw::oio::Read">Read</a>;
     type <a href="#associatedtype.BlockingReader" class="associatedtype">BlockingReader</a>: <a class="trait" href="oio/trait.BlockingRead.html" title="trait opendal::raw::oio::BlockingRead">BlockingRead</a>;
@@ -13,7 +13,7 @@
 <span class="item-spacer"></span>    fn <a href="#tymethod.read" class="fn">read</a>&lt;'life0, 'life1, 'async_trait&gt;(
         &amp;'life0 self,
         path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-        args: <a class="struct" href="../ops/struct.OpRead.html" title="struct opendal::ops::OpRead">OpRead</a>
+        args: <a class="struct" href="struct.OpRead.html" title="struct opendal::raw::OpRead">OpRead</a>
     ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal [...]
        <span class="where">where Self: 'async_trait,
              'life0: 'async_trait,
@@ -21,7 +21,7 @@
 <span class="item-spacer"></span>    fn <a href="#tymethod.write" class="fn">write</a>&lt;'life0, 'life1, 'async_trait&gt;(
         &amp;'life0 self,
         path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-        args: <a class="struct" href="../ops/struct.OpWrite.html" title="struct opendal::ops::OpWrite">OpWrite</a>
+        args: <a class="struct" href="struct.OpWrite.html" title="struct opendal::raw::OpWrite">OpWrite</a>
     ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal [...]
        <span class="where">where Self: 'async_trait,
              'life0: 'async_trait,
@@ -29,7 +29,7 @@
 <span class="item-spacer"></span>    fn <a href="#tymethod.append" class="fn">append</a>&lt;'life0, 'life1, 'async_trait&gt;(
         &amp;'life0 self,
         path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-        args: <a class="struct" href="../ops/struct.OpAppend.html" title="struct opendal::ops::OpAppend">OpAppend</a>
+        args: <a class="struct" href="struct.OpAppend.html" title="struct opendal::raw::OpAppend">OpAppend</a>
     ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal [...]
        <span class="where">where Self: 'async_trait,
              'life0: 'async_trait,
@@ -37,7 +37,7 @@
 <span class="item-spacer"></span>    fn <a href="#tymethod.list" class="fn">list</a>&lt;'life0, 'life1, 'async_trait&gt;(
         &amp;'life0 self,
         path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-        args: <a class="struct" href="../ops/struct.OpList.html" title="struct opendal::ops::OpList">OpList</a>
+        args: <a class="struct" href="struct.OpList.html" title="struct opendal::raw::OpList">OpList</a>
     ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal [...]
        <span class="where">where Self: 'async_trait,
              'life0: 'async_trait,
@@ -45,17 +45,17 @@
 <span class="item-spacer"></span>    fn <a href="#tymethod.blocking_read" class="fn">blocking_read</a>(
         &amp;self,
         path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-        args: <a class="struct" href="../ops/struct.OpRead.html" title="struct opendal::ops::OpRead">OpRead</a>
+        args: <a class="struct" href="struct.OpRead.html" title="struct opendal::raw::OpRead">OpRead</a>
     ) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="struct.RpRead.html" title="struct opendal::raw::RpRead">RpRead</a>, Self::<a class="associatedtype" href="trait.LayeredAccessor.html#associatedtype.BlockingReader" title="type opendal::raw::LayeredAccessor::BlockingReader">BlockingReader</a>)&gt;;
 <span class="item-spacer"></span>    fn <a href="#tymethod.blocking_write" class="fn">blocking_write</a>(
         &amp;self,
         path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-        args: <a class="struct" href="../ops/struct.OpWrite.html" title="struct opendal::ops::OpWrite">OpWrite</a>
+        args: <a class="struct" href="struct.OpWrite.html" title="struct opendal::raw::OpWrite">OpWrite</a>
     ) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="struct.RpWrite.html" title="struct opendal::raw::RpWrite">RpWrite</a>, Self::<a class="associatedtype" href="trait.LayeredAccessor.html#associatedtype.BlockingWriter" title="type opendal::raw::LayeredAccessor::BlockingWriter">BlockingWriter</a>)&gt;;
 <span class="item-spacer"></span>    fn <a href="#tymethod.blocking_list" class="fn">blocking_list</a>(
         &amp;self,
         path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-        args: <a class="struct" href="../ops/struct.OpList.html" title="struct opendal::ops::OpList">OpList</a>
+        args: <a class="struct" href="struct.OpList.html" title="struct opendal::raw::OpList">OpList</a>
     ) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="struct.RpList.html" title="struct opendal::raw::RpList">RpList</a>, Self::<a class="associatedtype" href="trait.LayeredAccessor.html#associatedtype.BlockingPager" title="type opendal::raw::LayeredAccessor::BlockingPager">BlockingPager</a>)&gt;;
 
     // Provided methods
@@ -63,7 +63,7 @@
 <span class="item-spacer"></span>    fn <a href="#method.create_dir" class="fn">create_dir</a>&lt;'life0, 'life1, 'async_trait&gt;(
         &amp;'life0 self,
         path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-        args: <a class="struct" href="../ops/struct.OpCreateDir.html" title="struct opendal::ops::OpCreateDir">OpCreateDir</a>
+        args: <a class="struct" href="struct.OpCreateDir.html" title="struct opendal::raw::OpCreateDir">OpCreateDir</a>
     ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal [...]
        <span class="where">where Self: 'async_trait,
              'life0: 'async_trait,
@@ -72,7 +72,7 @@
         &amp;'life0 self,
         from: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
         to: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-        args: <a class="struct" href="../ops/struct.OpCopy.html" title="struct opendal::ops::OpCopy">OpCopy</a>
+        args: <a class="struct" href="struct.OpCopy.html" title="struct opendal::raw::OpCopy">OpCopy</a>
     ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal [...]
        <span class="where">where Self: 'async_trait,
              'life0: 'async_trait,
@@ -82,7 +82,7 @@
         &amp;'life0 self,
         from: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
         to: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-        args: <a class="struct" href="../ops/struct.OpRename.html" title="struct opendal::ops::OpRename">OpRename</a>
+        args: <a class="struct" href="struct.OpRename.html" title="struct opendal::raw::OpRename">OpRename</a>
     ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal [...]
        <span class="where">where Self: 'async_trait,
              'life0: 'async_trait,
@@ -91,7 +91,7 @@
 <span class="item-spacer"></span>    fn <a href="#method.stat" class="fn">stat</a>&lt;'life0, 'life1, 'async_trait&gt;(
         &amp;'life0 self,
         path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-        args: <a class="struct" href="../ops/struct.OpStat.html" title="struct opendal::ops::OpStat">OpStat</a>
+        args: <a class="struct" href="struct.OpStat.html" title="struct opendal::raw::OpStat">OpStat</a>
     ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal [...]
        <span class="where">where Self: 'async_trait,
              'life0: 'async_trait,
@@ -99,21 +99,21 @@
 <span class="item-spacer"></span>    fn <a href="#method.delete" class="fn">delete</a>&lt;'life0, 'life1, 'async_trait&gt;(
         &amp;'life0 self,
         path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-        args: <a class="struct" href="../ops/struct.OpDelete.html" title="struct opendal::ops::OpDelete">OpDelete</a>
+        args: <a class="struct" href="struct.OpDelete.html" title="struct opendal::raw::OpDelete">OpDelete</a>
     ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal [...]
        <span class="where">where Self: 'async_trait,
              'life0: 'async_trait,
              'life1: 'async_trait</span> { ... }
 <span class="item-spacer"></span>    fn <a href="#method.batch" class="fn">batch</a>&lt;'life0, 'async_trait&gt;(
         &amp;'life0 self,
-        args: <a class="struct" href="../ops/struct.OpBatch.html" title="struct opendal::ops::OpBatch">OpBatch</a>
+        args: <a class="struct" href="struct.OpBatch.html" title="struct opendal::raw::OpBatch">OpBatch</a>
     ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal [...]
        <span class="where">where Self: 'async_trait,
              'life0: 'async_trait</span> { ... }
 <span class="item-spacer"></span>    fn <a href="#method.presign" class="fn">presign</a>&lt;'life0, 'life1, 'async_trait&gt;(
         &amp;'life0 self,
         path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-        args: <a class="struct" href="../ops/struct.OpPresign.html" title="struct opendal::ops::OpPresign">OpPresign</a>
+        args: <a class="struct" href="struct.OpPresign.html" title="struct opendal::raw::OpPresign">OpPresign</a>
     ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal [...]
        <span class="where">where Self: 'async_trait,
              'life0: 'async_trait,
@@ -121,112 +121,112 @@
 <span class="item-spacer"></span>    fn <a href="#method.blocking_create_dir" class="fn">blocking_create_dir</a>(
         &amp;self,
         path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-        args: <a class="struct" href="../ops/struct.OpCreateDir.html" title="struct opendal::ops::OpCreateDir">OpCreateDir</a>
+        args: <a class="struct" href="struct.OpCreateDir.html" title="struct opendal::raw::OpCreateDir">OpCreateDir</a>
     ) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="struct" href="struct.RpCreateDir.html" title="struct opendal::raw::RpCreateDir">RpCreateDir</a>&gt; { ... }
-<span class="item-spacer"></span>    fn <a href="#method.blocking_copy" class="fn">blocking_copy</a>(&amp;self, from: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, to: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, args: <a class="struct" href="../ops/struct.OpCopy.html" title="struct opendal::ops::OpCopy">OpCopy</a>) -&gt; <a class="type" href="../type.Result.html" title="type opendal: [...]
+<span class="item-spacer"></span>    fn <a href="#method.blocking_copy" class="fn">blocking_copy</a>(&amp;self, from: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, to: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, args: <a class="struct" href="struct.OpCopy.html" title="struct opendal::raw::OpCopy">OpCopy</a>) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result [...]
 <span class="item-spacer"></span>    fn <a href="#method.blocking_rename" class="fn">blocking_rename</a>(
         &amp;self,
         from: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
         to: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-        args: <a class="struct" href="../ops/struct.OpRename.html" title="struct opendal::ops::OpRename">OpRename</a>
+        args: <a class="struct" href="struct.OpRename.html" title="struct opendal::raw::OpRename">OpRename</a>
     ) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="struct" href="struct.RpRename.html" title="struct opendal::raw::RpRename">RpRename</a>&gt; { ... }
-<span class="item-spacer"></span>    fn <a href="#method.blocking_stat" class="fn">blocking_stat</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, args: <a class="struct" href="../ops/struct.OpStat.html" title="struct opendal::ops::OpStat">OpStat</a>) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="struct" href="struct.RpStat.html" title="struct opendal::raw::RpStat" [...]
-<span class="item-spacer"></span>    fn <a href="#method.blocking_delete" class="fn">blocking_delete</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, args: <a class="struct" href="../ops/struct.OpDelete.html" title="struct opendal::ops::OpDelete">OpDelete</a>) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="struct" href="struct.RpDelete.html" title="struct opendal:: [...]
+<span class="item-spacer"></span>    fn <a href="#method.blocking_stat" class="fn">blocking_stat</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, args: <a class="struct" href="struct.OpStat.html" title="struct opendal::raw::OpStat">OpStat</a>) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="struct" href="struct.RpStat.html" title="struct opendal::raw::RpStat">RpStat [...]
+<span class="item-spacer"></span>    fn <a href="#method.blocking_delete" class="fn">blocking_delete</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, args: <a class="struct" href="struct.OpDelete.html" title="struct opendal::raw::OpDelete">OpDelete</a>) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="struct" href="struct.RpDelete.html" title="struct opendal::raw::Rp [...]
 </details>}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>LayeredAccessor is layered accessor that forward all not implemented
 method to inner.</p>
-</div></details><h2 id="required-associated-types" class="small-section-header">Required Associated Types<a href="#required-associated-types" class="anchor">§</a></h2><div class="methods"><section id="associatedtype.Inner" class="method"><a class="srclink rightside" href="../../src/opendal/raw/layer.rs.html#137">source</a><h4 class="code-header">type <a href="#associatedtype.Inner" class="associatedtype">Inner</a>: <a class="trait" href="trait.Accessor.html" title="trait opendal::raw::Ac [...]
+</div></details><h2 id="required-associated-types" class="small-section-header">Required Associated Types<a href="#required-associated-types" class="anchor">§</a></h2><div class="methods"><section id="associatedtype.Inner" class="method"><a class="srclink rightside" href="../../src/opendal/raw/layer.rs.html#135">source</a><h4 class="code-header">type <a href="#associatedtype.Inner" class="associatedtype">Inner</a>: <a class="trait" href="trait.Accessor.html" title="trait opendal::raw::Ac [...]
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpRead.html" title="struct opendal::ops::OpRead">OpRead</a>
+    args: <a class="struct" href="struct.OpRead.html" title="struct opendal::raw::OpRead">OpRead</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section><section id="tymethod.write" class="method"><a class="srclink rightside" href="../../src/opendal/raw/layer.rs.html#158">source</a><h4 class="code-header">fn <a href="#tymethod.write" class="fn">write</a>&lt;'life0, 'life1, 'async_trait&gt;(
+    'life1: 'async_trait,</span></h4></section><section id="tymethod.write" class="method"><a class="srclink rightside" href="../../src/opendal/raw/layer.rs.html#156">source</a><h4 class="code-header">fn <a href="#tymethod.write" class="fn">write</a>&lt;'life0, 'life1, 'async_trait&gt;(
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpWrite.html" title="struct opendal::ops::OpWrite">OpWrite</a>
+    args: <a class="struct" href="struct.OpWrite.html" title="struct opendal::raw::OpWrite">OpWrite</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section><section id="tymethod.append" class="method"><a class="srclink rightside" href="../../src/opendal/raw/layer.rs.html#160">source</a><h4 class="code-header">fn <a href="#tymethod.append" class="fn">append</a>&lt;'life0, 'life1, 'async_trait&gt;(
+    'life1: 'async_trait,</span></h4></section><section id="tymethod.append" class="method"><a class="srclink rightside" href="../../src/opendal/raw/layer.rs.html#158">source</a><h4 class="code-header">fn <a href="#tymethod.append" class="fn">append</a>&lt;'life0, 'life1, 'async_trait&gt;(
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpAppend.html" title="struct opendal::ops::OpAppend">OpAppend</a>
+    args: <a class="struct" href="struct.OpAppend.html" title="struct opendal::raw::OpAppend">OpAppend</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section><section id="tymethod.list" class="method"><a class="srclink rightside" href="../../src/opendal/raw/layer.rs.html#178">source</a><h4 class="code-header">fn <a href="#tymethod.list" class="fn">list</a>&lt;'life0, 'life1, 'async_trait&gt;(
+    'life1: 'async_trait,</span></h4></section><section id="tymethod.list" class="method"><a class="srclink rightside" href="../../src/opendal/raw/layer.rs.html#176">source</a><h4 class="code-header">fn <a href="#tymethod.list" class="fn">list</a>&lt;'life0, 'life1, 'async_trait&gt;(
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpList.html" title="struct opendal::ops::OpList">OpList</a>
+    args: <a class="struct" href="struct.OpList.html" title="struct opendal::raw::OpList">OpList</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section><section id="tymethod.blocking_read" class="method"><a class="srclink rightside" href="../../src/opendal/raw/layer.rs.html#192">source</a><h4 class="code-header">fn <a href="#tymethod.blocking_read" class="fn">blocking_read</a>(
+    'life1: 'async_trait,</span></h4></section><section id="tymethod.blocking_read" class="method"><a class="srclink rightside" href="../../src/opendal/raw/layer.rs.html#190">source</a><h4 class="code-header">fn <a href="#tymethod.blocking_read" class="fn">blocking_read</a>(
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpRead.html" title="struct opendal::ops::OpRead">OpRead</a>
-) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="struct.RpRead.html" title="struct opendal::raw::RpRead">RpRead</a>, Self::<a class="associatedtype" href="trait.LayeredAccessor.html#associatedtype.BlockingReader" title="type opendal::raw::LayeredAccessor::BlockingReader">BlockingReader</a>)&gt;</h4></section><section id="tymethod.blocking_write" class="method"><a class="srclink rightside" href="../../src/opendal/raw/la [...]
+    args: <a class="struct" href="struct.OpRead.html" title="struct opendal::raw::OpRead">OpRead</a>
+) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="struct.RpRead.html" title="struct opendal::raw::RpRead">RpRead</a>, Self::<a class="associatedtype" href="trait.LayeredAccessor.html#associatedtype.BlockingReader" title="type opendal::raw::LayeredAccessor::BlockingReader">BlockingReader</a>)&gt;</h4></section><section id="tymethod.blocking_write" class="method"><a class="srclink rightside" href="../../src/opendal/raw/la [...]
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpWrite.html" title="struct opendal::ops::OpWrite">OpWrite</a>
-) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="struct.RpWrite.html" title="struct opendal::raw::RpWrite">RpWrite</a>, Self::<a class="associatedtype" href="trait.LayeredAccessor.html#associatedtype.BlockingWriter" title="type opendal::raw::LayeredAccessor::BlockingWriter">BlockingWriter</a>)&gt;</h4></section><section id="tymethod.blocking_list" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ [...]
+    args: <a class="struct" href="struct.OpWrite.html" title="struct opendal::raw::OpWrite">OpWrite</a>
+) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="struct.RpWrite.html" title="struct opendal::raw::RpWrite">RpWrite</a>, Self::<a class="associatedtype" href="trait.LayeredAccessor.html#associatedtype.BlockingWriter" title="type opendal::raw::LayeredAccessor::BlockingWriter">BlockingWriter</a>)&gt;</h4></section><section id="tymethod.blocking_list" class="method"><a class="srclink rightside" href="../../src/opendal/raw/ [...]
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpList.html" title="struct opendal::ops::OpList">OpList</a>
-) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="struct.RpList.html" title="struct opendal::raw::RpList">RpList</a>, Self::<a class="associatedtype" href="trait.LayeredAccessor.html#associatedtype.BlockingPager" title="type opendal::raw::LayeredAccessor::BlockingPager">BlockingPager</a>)&gt;</h4></section></div><h2 id="provided-methods" class="small-section-header">Provided Methods<a href="#provided-methods" class="anc [...]
+    args: <a class="struct" href="struct.OpList.html" title="struct opendal::raw::OpList">OpList</a>
+) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;(<a class="struct" href="struct.RpList.html" title="struct opendal::raw::RpList">RpList</a>, Self::<a class="associatedtype" href="trait.LayeredAccessor.html#associatedtype.BlockingPager" title="type opendal::raw::LayeredAccessor::BlockingPager">BlockingPager</a>)&gt;</h4></section></div><h2 id="provided-methods" class="small-section-header">Provided Methods<a href="#provided-methods" class="anc [...]
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpCreateDir.html" title="struct opendal::ops::OpCreateDir">OpCreateDir</a>
+    args: <a class="struct" href="struct.OpCreateDir.html" title="struct opendal::raw::OpCreateDir">OpCreateDir</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section><section id="method.copy" class="method"><a class="srclink rightside" href="../../src/opendal/raw/layer.rs.html#162-164">source</a><h4 class="code-header">fn <a href="#method.copy" class="fn">copy</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(
+    'life1: 'async_trait,</span></h4></section><section id="method.copy" class="method"><a class="srclink rightside" href="../../src/opendal/raw/layer.rs.html#160-162">source</a><h4 class="code-header">fn <a href="#method.copy" class="fn">copy</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(
     &amp;'life0 self,
     from: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
     to: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpCopy.html" title="struct opendal::ops::OpCopy">OpCopy</a>
+    args: <a class="struct" href="struct.OpCopy.html" title="struct opendal::raw::OpCopy">OpCopy</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,
-    'life2: 'async_trait,</span></h4></section><section id="method.rename" class="method"><a class="srclink rightside" href="../../src/opendal/raw/layer.rs.html#166-168">source</a><h4 class="code-header">fn <a href="#method.rename" class="fn">rename</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(
+    'life2: 'async_trait,</span></h4></section><section id="method.rename" class="method"><a class="srclink rightside" href="../../src/opendal/raw/layer.rs.html#164-166">source</a><h4 class="code-header">fn <a href="#method.rename" class="fn">rename</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(
     &amp;'life0 self,
     from: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
     to: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpRename.html" title="struct opendal::ops::OpRename">OpRename</a>
+    args: <a class="struct" href="struct.OpRename.html" title="struct opendal::raw::OpRename">OpRename</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,
-    'life2: 'async_trait,</span></h4></section><section id="method.stat" class="method"><a class="srclink rightside" href="../../src/opendal/raw/layer.rs.html#170-172">source</a><h4 class="code-header">fn <a href="#method.stat" class="fn">stat</a>&lt;'life0, 'life1, 'async_trait&gt;(
+    'life2: 'async_trait,</span></h4></section><section id="method.stat" class="method"><a class="srclink rightside" href="../../src/opendal/raw/layer.rs.html#168-170">source</a><h4 class="code-header">fn <a href="#method.stat" class="fn">stat</a>&lt;'life0, 'life1, 'async_trait&gt;(
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpStat.html" title="struct opendal::ops::OpStat">OpStat</a>
+    args: <a class="struct" href="struct.OpStat.html" title="struct opendal::raw::OpStat">OpStat</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section><section id="method.delete" class="method"><a class="srclink rightside" href="../../src/opendal/raw/layer.rs.html#174-176">source</a><h4 class="code-header">fn <a href="#method.delete" class="fn">delete</a>&lt;'life0, 'life1, 'async_trait&gt;(
+    'life1: 'async_trait,</span></h4></section><section id="method.delete" class="method"><a class="srclink rightside" href="../../src/opendal/raw/layer.rs.html#172-174">source</a><h4 class="code-header">fn <a href="#method.delete" class="fn">delete</a>&lt;'life0, 'life1, 'async_trait&gt;(
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpDelete.html" title="struct opendal::ops::OpDelete">OpDelete</a>
+    args: <a class="struct" href="struct.OpDelete.html" title="struct opendal::raw::OpDelete">OpDelete</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section><section id="method.batch" class="method"><a class="srclink rightside" href="../../src/opendal/raw/layer.rs.html#180-182">source</a><h4 class="code-header">fn <a href="#method.batch" class="fn">batch</a>&lt;'life0, 'async_trait&gt;(
+    'life1: 'async_trait,</span></h4></section><section id="method.batch" class="method"><a class="srclink rightside" href="../../src/opendal/raw/layer.rs.html#178-180">source</a><h4 class="code-header">fn <a href="#method.batch" class="fn">batch</a>&lt;'life0, 'async_trait&gt;(
     &amp;'life0 self,
-    args: <a class="struct" href="../ops/struct.OpBatch.html" title="struct opendal::ops::OpBatch">OpBatch</a>
+    args: <a class="struct" href="struct.OpBatch.html" title="struct opendal::raw::OpBatch">OpBatch</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
-    'life0: 'async_trait,</span></h4></section><section id="method.presign" class="method"><a class="srclink rightside" href="../../src/opendal/raw/layer.rs.html#184-186">source</a><h4 class="code-header">fn <a href="#method.presign" class="fn">presign</a>&lt;'life0, 'life1, 'async_trait&gt;(
+    'life0: 'async_trait,</span></h4></section><section id="method.presign" class="method"><a class="srclink rightside" href="../../src/opendal/raw/layer.rs.html#182-184">source</a><h4 class="code-header">fn <a href="#method.presign" class="fn">presign</a>&lt;'life0, 'life1, 'async_trait&gt;(
     &amp;'life0 self,
     path: &amp;'life1 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpPresign.html" title="struct opendal::ops::OpPresign">OpPresign</a>
+    args: <a class="struct" href="struct.OpPresign.html" title="struct opendal::raw::OpPresign">OpPresign</a>
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../type.Result.html" title="type opendal::Re [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</span></h4></section><section id="method.blocking_create_dir" class="method"><a class="srclink rightside" href="../../src/opendal/raw/layer.rs.html#188-190">source</a><h4 class="code-header">fn <a href="#method.blocking_create_dir" class="fn">blocking_create_dir</a>(
+    'life1: 'async_trait,</span></h4></section><section id="method.blocking_create_dir" class="method"><a class="srclink rightside" href="../../src/opendal/raw/layer.rs.html#186-188">source</a><h4 class="code-header">fn <a href="#method.blocking_create_dir" class="fn">blocking_create_dir</a>(
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
-    args: <a class="struct" href="../ops/struct.OpCreateDir.html" title="struct opendal::ops::OpCreateDir">OpCreateDir</a>
-) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="struct" href="struct.RpCreateDir.html" title="struct opendal::raw::RpCreateDir">RpCreateDir</a>&gt;</h4></section><section id="method.blocking_copy" class="method"><a class="srclink rightside" href="../../src/opendal/raw/layer.rs.html#196-198">source</a><h4 class="code-header">fn <a href="#method.blocking_copy" class="fn">blocking_copy</a>(&amp;self, from: &amp;<a class="primitive" hre [...]
\ No newline at end of file
+    args: <a class="struct" href="struct.OpCreateDir.html" title="struct opendal::raw::OpCreateDir">OpCreateDir</a>
+) -&gt; <a class="type" href="../type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="struct" href="struct.RpCreateDir.html" title="struct opendal::raw::RpCreateDir">RpCreateDir</a>&gt;</h4></section><section id="method.blocking_copy" class="method"><a class="srclink rightside" href="../../src/opendal/raw/layer.rs.html#194-196">source</a><h4 class="code-header">fn <a href="#method.blocking_copy" class="fn">blocking_copy</a>(&amp;self, from: &amp;<a class="primitive" hre [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/type.FusedAccessor.html b/docs/rust/opendal/raw/type.FusedAccessor.html
index 26954a2a..29128cff 100644
--- a/docs/rust/opendal/raw/type.FusedAccessor.html
+++ b/docs/rust/opendal/raw/type.FusedAccessor.html
@@ -1,2 +1,2 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="FusedAccessor is the type erased accessor with `Arc&lt;dyn Accessor&gt;`."><title>FusedAccessor in opendal::raw - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="FusedAccessor is the type erased accessor with `Arc&lt;dyn Accessor&gt;`."><title>FusedAccessor in opendal::raw - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font [...]
 </div></details></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="opendal" data-themes="" data-resource-suffix="" data-rustdoc-version="1.69.0 (84c898d65 2023-04-16)" data-search-js="search-8a59a8356673ec1f.js" data-settings-js="settings-f0c5c39777a9a2f6.js" data-settings-css="settings-0bcba95ff279c1db.css" ></div></body></html>
\ No newline at end of file
diff --git a/docs/rust/opendal/services/struct.Azblob.html b/docs/rust/opendal/services/struct.Azblob.html
index 313e4ac6..2ce3c8a9 100644
--- a/docs/rust/opendal/services/struct.Azblob.html
+++ b/docs/rust/opendal/services/struct.Azblob.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Azure Storage Blob services support."><title>Azblob in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href=". [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Azure Storage Blob services support."><title>Azblob in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href=". [...]
 <h2 id="capabilities"><a href="#capabilities">Capabilities</a></h2>
 <p>This service can be used to:</p>
 <ul>
@@ -75,37 +75,37 @@ az storage container create --name test --connection-string &quot;DefaultEndpoin
     </span><span class="kw">let </span>op: Operator = Operator::new(builder)<span class="question-mark">?</span>.finish();
     <span class="prelude-val">Ok</span>(())
 }</code></pre></div>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-AzblobBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/azblob/backend.rs.html#90-257">source</a><a href="#impl-AzblobBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Azblob. [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-AzblobBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/azblob/backend.rs.html#88-255">source</a><a href="#impl-AzblobBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Azblob. [...]
 <p>All operations will happen under this root.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.container" class="method"><a class="srclink rightside" href="../../src/opendal/services/azblob/backend.rs.html#103-107">source</a><h4 class="code-header">pub fn <a href="#method.container" class="fn">container</a>(&amp;mut self, container: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/ [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.endpoint" class="method"><a class="srclink rightside" href="../../src/opendal/services/azblob/backend.rs.html#115-122">source</a><h4 class="code-header">pub fn <a href="#method.endpoint" class="fn">endpoint</a>(&amp;mut self, endpoint: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/ [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.container" class="method"><a class="srclink rightside" href="../../src/opendal/services/azblob/backend.rs.html#101-105">source</a><h4 class="code-header">pub fn <a href="#method.container" class="fn">container</a>(&amp;mut self, container: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/ [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.endpoint" class="method"><a class="srclink rightside" href="../../src/opendal/services/azblob/backend.rs.html#113-120">source</a><h4 class="code-header">pub fn <a href="#method.endpoint" class="fn">endpoint</a>(&amp;mut self, endpoint: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/ [...]
 <p>Endpoint must be full uri, e.g.</p>
 <ul>
 <li>Azblob: <code>https://accountname.blob.core.windows.net</code></li>
 <li>Azurite: <code>http://127.0.0.1:10000/devstoreaccount1</code></li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.account_name" class="method"><a class="srclink rightside" href="../../src/opendal/services/azblob/backend.rs.html#128-134">source</a><h4 class="code-header">pub fn <a href="#method.account_name" class="fn">account_name</a>(&amp;mut self, account_name: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.account_name" class="method"><a class="srclink rightside" href="../../src/opendal/services/azblob/backend.rs.html#126-132">source</a><h4 class="code-header">pub fn <a href="#method.account_name" class="fn">account_name</a>(&amp;mut self, account_name: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang [...]
 <ul>
 <li>If account_name is set, we will take user’s input first.</li>
 <li>If not, we will try to load it from environment.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.account_key" class="method"><a class="srclink rightside" href="../../src/opendal/services/azblob/backend.rs.html#140-146">source</a><h4 class="code-header">pub fn <a href="#method.account_key" class="fn">account_key</a>(&amp;mut self, account_key: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.account_key" class="method"><a class="srclink rightside" href="../../src/opendal/services/azblob/backend.rs.html#138-144">source</a><h4 class="code-header">pub fn <a href="#method.account_key" class="fn">account_key</a>(&amp;mut self, account_key: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org [...]
 <ul>
 <li>If account_key is set, we will take user’s input first.</li>
 <li>If not, we will try to load it from environment.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.sas_token" class="method"><a class="srclink rightside" href="../../src/opendal/services/azblob/backend.rs.html#155-161">source</a><h4 class="code-header">pub fn <a href="#method.sas_token" class="fn">sas_token</a>(&amp;mut self, sas_token: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/ [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.sas_token" class="method"><a class="srclink rightside" href="../../src/opendal/services/azblob/backend.rs.html#153-159">source</a><h4 class="code-header">pub fn <a href="#method.sas_token" class="fn">sas_token</a>(&amp;mut self, sas_token: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/ [...]
 <ul>
 <li>If sas_token is set, we will take user’s input first.</li>
 <li>If not, we will try to load it from environment.</li>
 </ul>
 <p>See <a href="https://learn.microsoft.com/en-us/azure/storage/common/storage-sas-overview">Grant limited access to Azure Storage resources using shared access signatures (SAS)</a>
 for more info.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.http_client" class="method"><a class="srclink rightside" href="../../src/opendal/services/azblob/backend.rs.html#169-172">source</a><h4 class="code-header">pub fn <a href="#method.http_client" class="fn">http_client</a>(&amp;mut self, client: <a class="struct" href="../raw/struct.HttpClient.html" title="struct opendal::raw::HttpClient">HttpClient</a>) -&gt; <a class="primitive" href="https://doc.rust- [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.http_client" class="method"><a class="srclink rightside" href="../../src/opendal/services/azblob/backend.rs.html#167-170">source</a><h4 class="code-header">pub fn <a href="#method.http_client" class="fn">http_client</a>(&amp;mut self, client: <a class="struct" href="../raw/struct.HttpClient.html" title="struct opendal::raw::HttpClient">HttpClient</a>) -&gt; <a class="primitive" href="https://doc.rust- [...]
 <h5 id="notes"><a href="#notes">Notes</a></h5>
 <p>This API is part of OpenDAL’s Raw API. <code>HttpClient</code> could be changed
 during minor updates.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.from_connection_string" class="method"><a class="srclink rightside" href="../../src/opendal/services/azblob/backend.rs.html#201-256">source</a><h4 class="code-header">pub fn <a href="#method.from_connection_string" class="fn">from_connection_string</a>(conn: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="../type.Result.html [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.from_connection_string" class="method"><a class="srclink rightside" href="../../src/opendal/services/azblob/backend.rs.html#199-254">source</a><h4 class="code-header">pub fn <a href="#method.from_connection_string" class="fn">from_connection_string</a>(conn: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="../type.Result.html [...]
 <p>connection string looks like:</p>
 <div class="example-wrap"><pre class="language-txt"><code>DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;
 AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;
@@ -123,7 +123,7 @@ EndpointSuffix=core.chinacloudapi.cn;
 <h5 id="note"><a href="#note">Note</a></h5>
 <p>connection string only configures the endpoint, account name and account key.
 User still needs to configure bucket names.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-AzblobBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/azblob/backend.rs.html#259-338">source</a><a href="#impl-Builder-for-AzblobBuilder" class="anchor">§ [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-AzblobBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/azblob/backend.rs.html#257-336">source</a><a href="#impl-Builder-for-AzblobBuilder" class="anchor">§ [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/services/struct.Azdfs.html b/docs/rust/opendal/services/struct.Azdfs.html
index 22dfb9cf..c92a8c34 100644
--- a/docs/rust/opendal/services/struct.Azdfs.html
+++ b/docs/rust/opendal/services/struct.Azdfs.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Azure Data Lake Storage Gen2 Support. As known as `abfs`, `azdfs` or `azdls`."><title>Azdfs in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="fon [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Azure Data Lake Storage Gen2 Support. As known as `abfs`, `azdfs` or `azdls`."><title>Azdfs in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="fon [...]
 As known as <code>abfs</code>, <code>azdfs</code> or <code>azdls</code>.</p>
 <p>This service will visist the <a href="https://learn.microsoft.com/en-us/azure/storage/blobs/data-lake-storage-abfs-driver">ABFS</a> URI supported by <a href="https://learn.microsoft.com/en-us/azure/storage/blobs/data-lake-storage-introduction">Azure Data Lake Storage Gen2</a>.</p>
 <h2 id="capabilities"><a href="#capabilities">Capabilities</a></h2>
@@ -71,30 +71,30 @@ blocking</li>
 
     <span class="prelude-val">Ok</span>(())
 }</code></pre></div>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-AzdfsBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/azdfs/backend.rs.html#79-147">source</a><a href="#impl-AzdfsBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Azdfs.html [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-AzdfsBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/azdfs/backend.rs.html#78-146">source</a><a href="#impl-AzdfsBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Azdfs.html [...]
 <p>All operations will happen under this root.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.filesystem" class="method"><a class="srclink rightside" href="../../src/opendal/services/azdfs/backend.rs.html#92-96">source</a><h4 class="code-header">pub fn <a href="#method.filesystem" class="fn">filesystem</a>(&amp;mut self, filesystem: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0 [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.endpoint" class="method"><a class="srclink rightside" href="../../src/opendal/services/azdfs/backend.rs.html#104-111">source</a><h4 class="code-header">pub fn <a href="#method.endpoint" class="fn">endpoint</a>(&amp;mut self, endpoint: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/p [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.filesystem" class="method"><a class="srclink rightside" href="../../src/opendal/services/azdfs/backend.rs.html#91-95">source</a><h4 class="code-header">pub fn <a href="#method.filesystem" class="fn">filesystem</a>(&amp;mut self, filesystem: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0 [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.endpoint" class="method"><a class="srclink rightside" href="../../src/opendal/services/azdfs/backend.rs.html#103-110">source</a><h4 class="code-header">pub fn <a href="#method.endpoint" class="fn">endpoint</a>(&amp;mut self, endpoint: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/p [...]
 <p>Endpoint must be full uri, e.g.</p>
 <ul>
 <li>Azblob: <code>https://accountname.blob.core.windows.net</code></li>
 <li>Azurite: <code>http://127.0.0.1:10000/devstoreaccount1</code></li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.account_name" class="method"><a class="srclink rightside" href="../../src/opendal/services/azdfs/backend.rs.html#117-123">source</a><h4 class="code-header">pub fn <a href="#method.account_name" class="fn">account_name</a>(&amp;mut self, account_name: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang. [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.account_name" class="method"><a class="srclink rightside" href="../../src/opendal/services/azdfs/backend.rs.html#116-122">source</a><h4 class="code-header">pub fn <a href="#method.account_name" class="fn">account_name</a>(&amp;mut self, account_name: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang. [...]
 <ul>
 <li>If account_name is set, we will take user’s input first.</li>
 <li>If not, we will try to load it from environment.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.account_key" class="method"><a class="srclink rightside" href="../../src/opendal/services/azdfs/backend.rs.html#129-135">source</a><h4 class="code-header">pub fn <a href="#method.account_key" class="fn">account_key</a>(&amp;mut self, account_key: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/ [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.account_key" class="method"><a class="srclink rightside" href="../../src/opendal/services/azdfs/backend.rs.html#128-134">source</a><h4 class="code-header">pub fn <a href="#method.account_key" class="fn">account_key</a>(&amp;mut self, account_key: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/ [...]
 <ul>
 <li>If account_key is set, we will take user’s input first.</li>
 <li>If not, we will try to load it from environment.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.http_client" class="method"><a class="srclink rightside" href="../../src/opendal/services/azdfs/backend.rs.html#143-146">source</a><h4 class="code-header">pub fn <a href="#method.http_client" class="fn">http_client</a>(&amp;mut self, client: <a class="struct" href="../raw/struct.HttpClient.html" title="struct opendal::raw::HttpClient">HttpClient</a>) -&gt; <a class="primitive" href="https://doc.rust-l [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.http_client" class="method"><a class="srclink rightside" href="../../src/opendal/services/azdfs/backend.rs.html#142-145">source</a><h4 class="code-header">pub fn <a href="#method.http_client" class="fn">http_client</a>(&amp;mut self, client: <a class="struct" href="../raw/struct.HttpClient.html" title="struct opendal::raw::HttpClient">HttpClient</a>) -&gt; <a class="primitive" href="https://doc.rust-l [...]
 <h5 id="notes"><a href="#notes">Notes</a></h5>
 <p>This API is part of OpenDAL’s Raw API. <code>HttpClient</code> could be changed
 during minor updates.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-AzdfsBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/azdfs/backend.rs.html#149-222">source</a><a href="#impl-Builder-for-AzdfsBuilder" class="anchor">§</a [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-AzdfsBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/azdfs/backend.rs.html#148-221">source</a><a href="#impl-Builder-for-AzdfsBuilder" class="anchor">§</a [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/services/struct.Cos.html b/docs/rust/opendal/services/struct.Cos.html
index c7f1c9b5..3e58bbd9 100644
--- a/docs/rust/opendal/services/struct.Cos.html
+++ b/docs/rust/opendal/services/struct.Cos.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Huawei Cloud COS services support."><title>Cos in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../ [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Huawei Cloud COS services support."><title>Cos in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../ [...]
 <h2 id="capabilities"><a href="#capabilities">Capabilities</a></h2>
 <p>This service can be used to:</p>
 <ul>
@@ -60,37 +60,37 @@ blocking</li>
 
     <span class="prelude-val">Ok</span>(())
 }</code></pre></div>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-CosBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/cos/backend.rs.html#121-201">source</a><a href="#impl-CosBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Cos.html" title [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-CosBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/cos/backend.rs.html#120-200">source</a><a href="#impl-CosBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Cos.html" title [...]
 <p>All operations will happen under this root.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.endpoint" class="method"><a class="srclink rightside" href="../../src/opendal/services/cos/backend.rs.html#140-146">source</a><h4 class="code-header">pub fn <a href="#method.endpoint" class="fn">endpoint</a>(&amp;mut self, endpoint: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/pri [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.endpoint" class="method"><a class="srclink rightside" href="../../src/opendal/services/cos/backend.rs.html#139-145">source</a><h4 class="code-header">pub fn <a href="#method.endpoint" class="fn">endpoint</a>(&amp;mut self, endpoint: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/pri [...]
 <p>NOTE: no bucket or account id in endpoint, we will trim them if exists.</p>
 <h5 id="examples"><a href="#examples">Examples</a></h5>
 <ul>
 <li><code>https://cos.ap-singapore.myqcloud.com</code></li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.secret_id" class="method"><a class="srclink rightside" href="../../src/opendal/services/cos/backend.rs.html#151-157">source</a><h4 class="code-header">pub fn <a href="#method.secret_id" class="fn">secret_id</a>(&amp;mut self, secret_id: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.secret_id" class="method"><a class="srclink rightside" href="../../src/opendal/services/cos/backend.rs.html#150-156">source</a><h4 class="code-header">pub fn <a href="#method.secret_id" class="fn">secret_id</a>(&amp;mut self, secret_id: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std [...]
 <ul>
 <li>If it is set, we will take user’s input first.</li>
 <li>If not, we will try to load it from environment.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.secret_key" class="method"><a class="srclink rightside" href="../../src/opendal/services/cos/backend.rs.html#162-168">source</a><h4 class="code-header">pub fn <a href="#method.secret_key" class="fn">secret_key</a>(&amp;mut self, secret_key: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0 [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.secret_key" class="method"><a class="srclink rightside" href="../../src/opendal/services/cos/backend.rs.html#161-167">source</a><h4 class="code-header">pub fn <a href="#method.secret_key" class="fn">secret_key</a>(&amp;mut self, secret_key: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0 [...]
 <ul>
 <li>If it is set, we will take user’s input first.</li>
 <li>If not, we will try to load it from environment.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.bucket" class="method"><a class="srclink rightside" href="../../src/opendal/services/cos/backend.rs.html#172-178">source</a><h4 class="code-header">pub fn <a href="#method.bucket" class="fn">bucket</a>(&amp;mut self, bucket: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.r [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.bucket" class="method"><a class="srclink rightside" href="../../src/opendal/services/cos/backend.rs.html#171-177">source</a><h4 class="code-header">pub fn <a href="#method.bucket" class="fn">bucket</a>(&amp;mut self, bucket: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.r [...]
 The param is required.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.disable_config_load" class="method"><a class="srclink rightside" href="../../src/opendal/services/cos/backend.rs.html#186-189">source</a><h4 class="code-header">pub fn <a href="#method.disable_config_load" class="fn">disable_config_load</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a></h4></section></summary><div class [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.disable_config_load" class="method"><a class="srclink rightside" href="../../src/opendal/services/cos/backend.rs.html#185-188">source</a><h4 class="code-header">pub fn <a href="#method.disable_config_load" class="fn">disable_config_load</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a></h4></section></summary><div class [...]
 environment.</p>
 <p>For examples:</p>
 <ul>
 <li>envs like <code>TENCENTCLOUD_SECRET_ID</code></li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.http_client" class="method"><a class="srclink rightside" href="../../src/opendal/services/cos/backend.rs.html#197-200">source</a><h4 class="code-header">pub fn <a href="#method.http_client" class="fn">http_client</a>(&amp;mut self, client: <a class="struct" href="../raw/struct.HttpClient.html" title="struct opendal::raw::HttpClient">HttpClient</a>) -&gt; <a class="primitive" href="https://doc.rust-lan [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.http_client" class="method"><a class="srclink rightside" href="../../src/opendal/services/cos/backend.rs.html#196-199">source</a><h4 class="code-header">pub fn <a href="#method.http_client" class="fn">http_client</a>(&amp;mut self, client: <a class="struct" href="../raw/struct.HttpClient.html" title="struct opendal::raw::HttpClient">HttpClient</a>) -&gt; <a class="primitive" href="https://doc.rust-lan [...]
 <h5 id="notes"><a href="#notes">Notes</a></h5>
 <p>This API is part of OpenDAL’s Raw API. <code>HttpClient</code> could be changed
 during minor updates.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-CosBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/cos/backend.rs.html#203-291">source</a><a href="#impl-Builder-for-CosBuilder" class="anchor">§</a><h3 c [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-CosBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/cos/backend.rs.html#202-290">source</a><a href="#impl-Builder-for-CosBuilder" class="anchor">§</a><h3 c [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/services/struct.Fs.html b/docs/rust/opendal/services/struct.Fs.html
index cb42fb9a..26d01765 100644
--- a/docs/rust/opendal/services/struct.Fs.html
+++ b/docs/rust/opendal/services/struct.Fs.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="POSIX file system support."><title>Fs in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.fi [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="POSIX file system support."><title>Fs in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.fi [...]
 <h2 id="capabilities"><a href="#capabilities">Capabilities</a></h2>
 <p>This service can be used to:</p>
 <ul>
@@ -53,14 +53,14 @@ blocking</li>
 
     <span class="prelude-val">Ok</span>(())
 }</code></pre></div>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-FsBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/fs/backend.rs.html#96-130">source</a><a href="#impl-FsBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Fs.html" title="str [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.atomic_write_dir" class="method"><a class="srclink rightside" href="../../src/opendal/services/fs/backend.rs.html#109-117">source</a><h4 class="code-header">pub fn <a href="#method.atomic_write_dir" class="fn">atomic_write_dir</a>(&amp;mut self, dir: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang. [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.enable_path_check" class="method"><a class="srclink rightside" href="../../src/opendal/services/fs/backend.rs.html#125-129">source</a><h4 class="code-header">pub fn <a href="#method.enable_path_check" class="fn">enable_path_check</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a></h4></section></summary><div class="docbl [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-FsBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/fs/backend.rs.html#95-129">source</a><a href="#impl-FsBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Fs.html" title="str [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.atomic_write_dir" class="method"><a class="srclink rightside" href="../../src/opendal/services/fs/backend.rs.html#108-116">source</a><h4 class="code-header">pub fn <a href="#method.atomic_write_dir" class="fn">atomic_write_dir</a>(&amp;mut self, dir: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang. [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.enable_path_check" class="method"><a class="srclink rightside" href="../../src/opendal/services/fs/backend.rs.html#124-128">source</a><h4 class="code-header">pub fn <a href="#method.enable_path_check" class="fn">enable_path_check</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a></h4></section></summary><div class="docbl [...]
 behavior is consistent. By enable path check, we can make sure
 fs will behave the same as other services.</p>
 <p>Enabling this feature will lead to extra metadata call in all
 operations.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-FsBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/fs/backend.rs.html#132-221">source</a><a href="#impl-Builder-for-FsBuilder" class="anchor">§</a><h3 clas [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-FsBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/fs/backend.rs.html#131-220">source</a><a href="#impl-Builder-for-FsBuilder" class="anchor">§</a><h3 clas [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/services/struct.Ftp.html b/docs/rust/opendal/services/struct.Ftp.html
index 4bbf9523..ff29ced6 100644
--- a/docs/rust/opendal/services/struct.Ftp.html
+++ b/docs/rust/opendal/services/struct.Ftp.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="FTP and FTPS services support."><title>Ftp in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../stat [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="FTP and FTPS services support."><title>Ftp in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../stat [...]
 <h2 id="capabilities"><a href="#capabilities">Capabilities</a></h2>
 <p>This service can be used to:</p>
 <ul>
@@ -50,11 +50,11 @@ blocking</li>
     <span class="kw">let </span>_obj: Object = op.object(<span class="string">&quot;test_file&quot;</span>);
     <span class="prelude-val">Ok</span>(())
 }</code></pre></div>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-FtpBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/ftp/backend.rs.html#114-158">source</a><a href="#impl-FtpBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Ftp.html" title [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.root" class="method"><a class="srclink rightside" href="../../src/opendal/services/ftp/backend.rs.html#127-135">source</a><h4 class="code-header">pub fn <a href="#method.root" class="fn">root</a>(&amp;mut self, root: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.user" class="method"><a class="srclink rightside" href="../../src/opendal/services/ftp/backend.rs.html#138-146">source</a><h4 class="code-header">pub fn <a href="#method.user" class="fn">user</a>(&amp;mut self, user: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.password" class="method"><a class="srclink rightside" href="../../src/opendal/services/ftp/backend.rs.html#149-157">source</a><h4 class="code-header">pub fn <a href="#method.password" class="fn">password</a>(&amp;mut self, password: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/pri [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-FtpBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/ftp/backend.rs.html#160-234">source</a><a href="#impl-Builder-for-FtpBuilder" class="anchor">§</a><h3 c [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-FtpBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/ftp/backend.rs.html#113-157">source</a><a href="#impl-FtpBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Ftp.html" title [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.root" class="method"><a class="srclink rightside" href="../../src/opendal/services/ftp/backend.rs.html#126-134">source</a><h4 class="code-header">pub fn <a href="#method.root" class="fn">root</a>(&amp;mut self, root: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.user" class="method"><a class="srclink rightside" href="../../src/opendal/services/ftp/backend.rs.html#137-145">source</a><h4 class="code-header">pub fn <a href="#method.user" class="fn">user</a>(&amp;mut self, user: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.password" class="method"><a class="srclink rightside" href="../../src/opendal/services/ftp/backend.rs.html#148-156">source</a><h4 class="code-header">pub fn <a href="#method.password" class="fn">password</a>(&amp;mut self, password: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/pri [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-FtpBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/ftp/backend.rs.html#159-233">source</a><a href="#impl-Builder-for-FtpBuilder" class="anchor">§</a><h3 c [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/services/struct.Gcs.html b/docs/rust/opendal/services/struct.Gcs.html
index cd91d214..61749010 100644
--- a/docs/rust/opendal/services/struct.Gcs.html
+++ b/docs/rust/opendal/services/struct.Gcs.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Google Cloud Storage service."><title>Gcs in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../stati [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Google Cloud Storage service."><title>Gcs in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../stati [...]
 <h2 id="capabilities"><a href="#capabilities">Capabilities</a></h2>
 <p>This service can be used to:</p>
 <ul>
@@ -60,9 +60,9 @@ blocking</li>
     <span class="kw">let </span>op: Operator = Operator::new(builder)<span class="question-mark">?</span>.finish();
     <span class="prelude-val">Ok</span>(())
 }</code></pre></div>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-GcsBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/gcs/backend.rs.html#133-258">source</a><a href="#impl-GcsBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Gcs.html" title [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.bucket" class="method"><a class="srclink rightside" href="../../src/opendal/services/gcs/backend.rs.html#144-147">source</a><h4 class="code-header">pub fn <a href="#method.bucket" class="fn">bucket</a>(&amp;mut self, bucket: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.r [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.scope" class="method"><a class="srclink rightside" href="../../src/opendal/services/gcs/backend.rs.html#160-165">source</a><h4 class="code-header">pub fn <a href="#method.scope" class="fn">scope</a>(&amp;mut self, scope: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.refer [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-GcsBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/gcs/backend.rs.html#132-257">source</a><a href="#impl-GcsBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Gcs.html" title [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.bucket" class="method"><a class="srclink rightside" href="../../src/opendal/services/gcs/backend.rs.html#143-146">source</a><h4 class="code-header">pub fn <a href="#method.bucket" class="fn">bucket</a>(&amp;mut self, bucket: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.r [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.scope" class="method"><a class="srclink rightside" href="../../src/opendal/services/gcs/backend.rs.html#159-164">source</a><h4 class="code-header">pub fn <a href="#method.scope" class="fn">scope</a>(&amp;mut self, scope: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.refer [...]
 <p>If not set, we will use <code>https://www.googleapis.com/auth/devstorage.read_write</code>.</p>
 <h5 id="valid-scope-examples"><a href="#valid-scope-examples">Valid scope examples</a></h5>
 <ul>
@@ -71,21 +71,21 @@ blocking</li>
 <li>full-control: <code>https://www.googleapis.com/auth/devstorage.full_control</code></li>
 </ul>
 <p>Reference: <a href="https://cloud.google.com/storage/docs/authentication">Cloud Storage authentication</a></p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.service_account" class="method"><a class="srclink rightside" href="../../src/opendal/services/gcs/backend.rs.html#171-176">source</a><h4 class="code-header">pub fn <a href="#method.service_account" class="fn">service_account</a>(&amp;mut self, service_account: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc. [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.service_account" class="method"><a class="srclink rightside" href="../../src/opendal/services/gcs/backend.rs.html#170-175">source</a><h4 class="code-header">pub fn <a href="#method.service_account" class="fn">service_account</a>(&amp;mut self, service_account: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc. [...]
 <p>service account will be used for fetch token from vm metadata.
 If not set, we will try to fetch with <code>default</code> service account.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.endpoint" class="method"><a class="srclink rightside" href="../../src/opendal/services/gcs/backend.rs.html#179-184">source</a><h4 class="code-header">pub fn <a href="#method.endpoint" class="fn">endpoint</a>(&amp;mut self, endpoint: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/pri [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.credential" class="method"><a class="srclink rightside" href="../../src/opendal/services/gcs/backend.rs.html#187-192">source</a><h4 class="code-header">pub fn <a href="#method.credential" class="fn">credential</a>(&amp;mut self, credential: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0 [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.credential_path" class="method"><a class="srclink rightside" href="../../src/opendal/services/gcs/backend.rs.html#195-200">source</a><h4 class="code-header">pub fn <a href="#method.credential_path" class="fn">credential_path</a>(&amp;mut self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.o [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.http_client" class="method"><a class="srclink rightside" href="../../src/opendal/services/gcs/backend.rs.html#208-211">source</a><h4 class="code-header">pub fn <a href="#method.http_client" class="fn">http_client</a>(&amp;mut self, client: <a class="struct" href="../raw/struct.HttpClient.html" title="struct opendal::raw::HttpClient">HttpClient</a>) -&gt; <a class="primitive" href="https://doc.rust-lan [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.endpoint" class="method"><a class="srclink rightside" href="../../src/opendal/services/gcs/backend.rs.html#178-183">source</a><h4 class="code-header">pub fn <a href="#method.endpoint" class="fn">endpoint</a>(&amp;mut self, endpoint: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/pri [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.credential" class="method"><a class="srclink rightside" href="../../src/opendal/services/gcs/backend.rs.html#186-191">source</a><h4 class="code-header">pub fn <a href="#method.credential" class="fn">credential</a>(&amp;mut self, credential: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0 [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.credential_path" class="method"><a class="srclink rightside" href="../../src/opendal/services/gcs/backend.rs.html#194-199">source</a><h4 class="code-header">pub fn <a href="#method.credential_path" class="fn">credential_path</a>(&amp;mut self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.o [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.http_client" class="method"><a class="srclink rightside" href="../../src/opendal/services/gcs/backend.rs.html#207-210">source</a><h4 class="code-header">pub fn <a href="#method.http_client" class="fn">http_client</a>(&amp;mut self, client: <a class="struct" href="../raw/struct.HttpClient.html" title="struct opendal::raw::HttpClient">HttpClient</a>) -&gt; <a class="primitive" href="https://doc.rust-lan [...]
 <h5 id="notes"><a href="#notes">Notes</a></h5>
 <p>This API is part of OpenDAL’s Raw API. <code>HttpClient</code> could be changed
 during minor updates.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.customed_token_loader" class="method"><a class="srclink rightside" href="../../src/opendal/services/gcs/backend.rs.html#214-217">source</a><h4 class="code-header">pub fn <a href="#method.customed_token_loader" class="fn">customed_token_loader</a>(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.customed_token_loader" class="method"><a class="srclink rightside" href="../../src/opendal/services/gcs/backend.rs.html#213-216">source</a><h4 class="code-header">pub fn <a href="#method.customed_token_loader" class="fn">customed_token_loader</a>(
     &amp;mut self,
     token_load: <a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn GoogleTokenLoad&gt;
 ) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a></h4></section></summary><div class="docblock"><p>Specify the customed token loader used by this service.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.predefined_acl" class="method"><a class="srclink rightside" href="../../src/opendal/services/gcs/backend.rs.html#228-233">source</a><h4 class="code-header">pub fn <a href="#method.predefined_acl" class="fn">predefined_acl</a>(&amp;mut self, acl: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1 [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.predefined_acl" class="method"><a class="srclink rightside" href="../../src/opendal/services/gcs/backend.rs.html#227-232">source</a><h4 class="code-header">pub fn <a href="#method.predefined_acl" class="fn">predefined_acl</a>(&amp;mut self, acl: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1 [...]
 <p>Available values are:</p>
 <ul>
 <li><code>authenticatedRead</code></li>
@@ -95,7 +95,7 @@ during minor updates.</p>
 <li><code>projectPrivate</code></li>
 <li><code>publicRead</code></li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.default_storage_class" class="method"><a class="srclink rightside" href="../../src/opendal/services/gcs/backend.rs.html#242-247">source</a><h4 class="code-header">pub fn <a href="#method.default_storage_class" class="fn">default_storage_class</a>(&amp;mut self, class: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="http [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.default_storage_class" class="method"><a class="srclink rightside" href="../../src/opendal/services/gcs/backend.rs.html#241-246">source</a><h4 class="code-header">pub fn <a href="#method.default_storage_class" class="fn">default_storage_class</a>(&amp;mut self, class: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="http [...]
 <p>Available values are:</p>
 <ul>
 <li><code>STANDARD</code></li>
@@ -103,11 +103,11 @@ during minor updates.</p>
 <li><code>COLDLINE</code></li>
 <li><code>ARCHIVE</code></li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.write_fixed_size" class="method"><a class="srclink rightside" href="../../src/opendal/services/gcs/backend.rs.html#253-257">source</a><h4 class="code-header">pub fn <a href="#method.write_fixed_size" class="fn">write_fixed_size</a>(&amp;mut self, fixed_buffer_size: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.usize.html">usize</a>) -&gt; <a class="primitive" href="https:// [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.write_fixed_size" class="method"><a class="srclink rightside" href="../../src/opendal/services/gcs/backend.rs.html#252-256">source</a><h4 class="code-header">pub fn <a href="#method.write_fixed_size" class="fn">write_fixed_size</a>(&amp;mut self, fixed_buffer_size: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.usize.html">usize</a>) -&gt; <a class="primitive" href="https:// [...]
 Larger chunk sizes typically make uploads faster, but note that there’s a tradeoff between speed and memory usage.
 It’s recommended that you use at least 8 MiB for the chunk size.
 Reference: <a href="https://cloud.google.com/storage/docs/performing-resumable-uploads">Perform resumable uploads</a></p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-GcsBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/gcs/backend.rs.html#278-385">source</a><a href="#impl-Builder-for-GcsBuilder" class="anchor">§</a><h3 c [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-GcsBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/gcs/backend.rs.html#277-384">source</a><a href="#impl-Builder-for-GcsBuilder" class="anchor">§</a><h3 c [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/services/struct.Ghac.html b/docs/rust/opendal/services/struct.Ghac.html
index 67067134..80325450 100644
--- a/docs/rust/opendal/services/struct.Ghac.html
+++ b/docs/rust/opendal/services/struct.Ghac.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="GitHub Action Cache Services support."><title>Ghac in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href=".. [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="GitHub Action Cache Services support."><title>Ghac in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href=".. [...]
 <h2 id="capabilities"><a href="#capabilities">Capabilities</a></h2>
 <p>This service can be used to:</p>
 <ul>
@@ -75,21 +75,21 @@ be automatically evicted at any time.</p>
 
     <span class="prelude-val">Ok</span>(())
 }</code></pre></div>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-GhacBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/ghac/backend.rs.html#159-205">source</a><a href="#impl-GhacBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Ghac.html" t [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.version" class="method"><a class="srclink rightside" href="../../src/opendal/services/ghac/backend.rs.html#175-181">source</a><h4 class="code-header">pub fn <a href="#method.version" class="fn">version</a>(&amp;mut self, version: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primit [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-GhacBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/ghac/backend.rs.html#158-204">source</a><a href="#impl-GhacBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Ghac.html" t [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.version" class="method"><a class="srclink rightside" href="../../src/opendal/services/ghac/backend.rs.html#174-180">source</a><h4 class="code-header">pub fn <a href="#method.version" class="fn">version</a>(&amp;mut self, version: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primit [...]
 <p>The version is the unique value that provides namespacing.
 It’s better to make sure this value is only used by this backend.</p>
 <p>If not set, we will use <code>opendal</code> as default.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.enable_create_simulation" class="method"><a class="srclink rightside" href="../../src/opendal/services/ghac/backend.rs.html#190-193">source</a><h4 class="code-header">pub fn <a href="#method.enable_create_simulation" class="fn">enable_create_simulation</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a></h4></section></su [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.enable_create_simulation" class="method"><a class="srclink rightside" href="../../src/opendal/services/ghac/backend.rs.html#189-192">source</a><h4 class="code-header">pub fn <a href="#method.enable_create_simulation" class="fn">enable_create_simulation</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a></h4></section></su [...]
 <p>ghac service doesn’t support create empty files. By enabling
 create simulation, we will create a 1 byte file to represent
 empty file.</p>
 <p>As a side effect, we can’t create file with only 1 byte anymore.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.http_client" class="method"><a class="srclink rightside" href="../../src/opendal/services/ghac/backend.rs.html#201-204">source</a><h4 class="code-header">pub fn <a href="#method.http_client" class="fn">http_client</a>(&amp;mut self, client: <a class="struct" href="../raw/struct.HttpClient.html" title="struct opendal::raw::HttpClient">HttpClient</a>) -&gt; <a class="primitive" href="https://doc.rust-la [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.http_client" class="method"><a class="srclink rightside" href="../../src/opendal/services/ghac/backend.rs.html#200-203">source</a><h4 class="code-header">pub fn <a href="#method.http_client" class="fn">http_client</a>(&amp;mut self, client: <a class="struct" href="../raw/struct.HttpClient.html" title="struct opendal::raw::HttpClient">HttpClient</a>) -&gt; <a class="primitive" href="https://doc.rust-la [...]
 <h5 id="notes-1"><a href="#notes-1">Notes</a></h5>
 <p>This API is part of OpenDAL’s Raw API. <code>HttpClient</code> could be changed
 during minor updates.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-GhacBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/ghac/backend.rs.html#207-273">source</a><a href="#impl-Builder-for-GhacBuilder" class="anchor">§</a><h [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-GhacBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/ghac/backend.rs.html#206-272">source</a><a href="#impl-Builder-for-GhacBuilder" class="anchor">§</a><h [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/services/struct.Hdfs.html b/docs/rust/opendal/services/struct.Hdfs.html
index 3fbb5208..4181c98f 100644
--- a/docs/rust/opendal/services/struct.Hdfs.html
+++ b/docs/rust/opendal/services/struct.Hdfs.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Hadoop Distributed File System (HDFS™) support."><title>Hdfs in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigi [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Hadoop Distributed File System (HDFS™) support."><title>Hdfs in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigi [...]
 <p>A distributed file system that provides high-throughput access to application data.</p>
 <h2 id="capabilities"><a href="#capabilities">Capabilities</a></h2>
 <p>This service can be used to:</p>
@@ -87,15 +87,15 @@ blocking</li>
 
     <span class="prelude-val">Ok</span>(())
 }</code></pre></div>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-HdfsBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/hdfs/backend.rs.html#145-173">source</a><a href="#impl-HdfsBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Hdfs.html" t [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-HdfsBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/hdfs/backend.rs.html#144-172">source</a><a href="#impl-HdfsBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Hdfs.html" t [...]
 <p>All operations will happen under this root.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.name_node" class="method"><a class="srclink rightside" href="../../src/opendal/services/hdfs/backend.rs.html#165-172">source</a><h4 class="code-header">pub fn <a href="#method.name_node" class="fn">name_node</a>(&amp;mut self, name_node: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/st [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.name_node" class="method"><a class="srclink rightside" href="../../src/opendal/services/hdfs/backend.rs.html#164-171">source</a><h4 class="code-header">pub fn <a href="#method.name_node" class="fn">name_node</a>(&amp;mut self, name_node: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/st [...]
 <p>Valid format including:</p>
 <ul>
 <li><code>default</code>: using the default setting based on hadoop config.</li>
 <li><code>hdfs://127.0.0.1:9000</code>: connect to hdfs cluster.</li>
 </ul>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-HdfsBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/hdfs/backend.rs.html#175-219">source</a><a href="#impl-Builder-for-HdfsBuilder" class="anchor">§</a><h [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-HdfsBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/hdfs/backend.rs.html#174-218">source</a><a href="#impl-Builder-for-HdfsBuilder" class="anchor">§</a><h [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/services/struct.Http.html b/docs/rust/opendal/services/struct.Http.html
index a177d158..41748128 100644
--- a/docs/rust/opendal/services/struct.Http.html
+++ b/docs/rust/opendal/services/struct.Http.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="HTTP Read-only service support like Nginx and Caddy."><title>Http in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" cross [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="HTTP Read-only service support like Nginx and Caddy."><title>Http in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" cross [...]
 <h2 id="capabilities"><a href="#capabilities">Capabilities</a></h2>
 <p>This service can be used to:</p>
 <ul>
@@ -49,20 +49,20 @@ HTTP Server like nginx, caddy.</p>
     <span class="kw">let </span>op: Operator = Operator::new(builder)<span class="question-mark">?</span>.finish();
     <span class="prelude-val">Ok</span>(())
 }</code></pre></div>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-HttpBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/http/backend.rs.html#106-171">source</a><a href="#impl-HttpBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Http.html" t [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-HttpBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/http/backend.rs.html#105-170">source</a><a href="#impl-HttpBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Http.html" t [...]
 <p>For example: <code>https://example.com</code></p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.username" class="method"><a class="srclink rightside" href="../../src/opendal/services/http/backend.rs.html#123-128">source</a><h4 class="code-header">pub fn <a href="#method.username" class="fn">username</a>(&amp;mut self, username: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/pr [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.username" class="method"><a class="srclink rightside" href="../../src/opendal/services/http/backend.rs.html#122-127">source</a><h4 class="code-header">pub fn <a href="#method.username" class="fn">username</a>(&amp;mut self, username: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/pr [...]
 <p>default: no password</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.password" class="method"><a class="srclink rightside" href="../../src/opendal/services/http/backend.rs.html#133-138">source</a><h4 class="code-header">pub fn <a href="#method.password" class="fn">password</a>(&amp;mut self, password: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/pr [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.password" class="method"><a class="srclink rightside" href="../../src/opendal/services/http/backend.rs.html#132-137">source</a><h4 class="code-header">pub fn <a href="#method.password" class="fn">password</a>(&amp;mut self, password: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/pr [...]
 <p>default: no password</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.token" class="method"><a class="srclink rightside" href="../../src/opendal/services/http/backend.rs.html#143-148">source</a><h4 class="code-header">pub fn <a href="#method.token" class="fn">token</a>(&amp;mut self, token: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.refe [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.token" class="method"><a class="srclink rightside" href="../../src/opendal/services/http/backend.rs.html#142-147">source</a><h4 class="code-header">pub fn <a href="#method.token" class="fn">token</a>(&amp;mut self, token: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.refe [...]
 <p>default: no access token</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.root" class="method"><a class="srclink rightside" href="../../src/opendal/services/http/backend.rs.html#151-159">source</a><h4 class="code-header">pub fn <a href="#method.root" class="fn">root</a>(&amp;mut self, root: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.referenc [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.http_client" class="method"><a class="srclink rightside" href="../../src/opendal/services/http/backend.rs.html#167-170">source</a><h4 class="code-header">pub fn <a href="#method.http_client" class="fn">http_client</a>(&amp;mut self, client: <a class="struct" href="../raw/struct.HttpClient.html" title="struct opendal::raw::HttpClient">HttpClient</a>) -&gt; <a class="primitive" href="https://doc.rust-la [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.root" class="method"><a class="srclink rightside" href="../../src/opendal/services/http/backend.rs.html#150-158">source</a><h4 class="code-header">pub fn <a href="#method.root" class="fn">root</a>(&amp;mut self, root: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.referenc [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.http_client" class="method"><a class="srclink rightside" href="../../src/opendal/services/http/backend.rs.html#166-169">source</a><h4 class="code-header">pub fn <a href="#method.http_client" class="fn">http_client</a>(&amp;mut self, client: <a class="struct" href="../raw/struct.HttpClient.html" title="struct opendal::raw::HttpClient">HttpClient</a>) -&gt; <a class="primitive" href="https://doc.rust-la [...]
 <h5 id="notes-1"><a href="#notes-1">Notes</a></h5>
 <p>This API is part of OpenDAL’s Raw API. <code>HttpClient</code> could be changed
 during minor updates.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-HttpBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/http/backend.rs.html#173-231">source</a><a href="#impl-Builder-for-HttpBuilder" class="anchor">§</a><h [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-HttpBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/http/backend.rs.html#172-230">source</a><a href="#impl-Builder-for-HttpBuilder" class="anchor">§</a><h [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/services/struct.Ipfs.html b/docs/rust/opendal/services/struct.Ipfs.html
index a38391d6..caa07bb1 100644
--- a/docs/rust/opendal/services/struct.Ipfs.html
+++ b/docs/rust/opendal/services/struct.Ipfs.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="IPFS file system support based on IPFS HTTP Gateway."><title>Ipfs in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" cross [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="IPFS file system support based on IPFS HTTP Gateway."><title>Ipfs in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" cross [...]
 <h2 id="capabilities"><a href="#capabilities">Capabilities</a></h2>
 <p>This service can be used to:</p>
 <ul>
@@ -54,14 +54,14 @@ blocking</li>
 
     <span class="prelude-val">Ok</span>(())
 }</code></pre></div>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-IpfsBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/ipfs/backend.rs.html#96-142">source</a><a href="#impl-IpfsBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Ipfs.html" ti [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-IpfsBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/ipfs/backend.rs.html#95-141">source</a><a href="#impl-IpfsBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Ipfs.html" ti [...]
 <p>Root must be a valid ipfs address like the following:</p>
 <ul>
 <li><code>/ipfs/QmPpCt1aYGb9JWJRmXRUnmJtVgeFFTJGzWFYEEX7bo9zGJ/</code> (IPFS with CID v0)</li>
 <li><code>/ipfs/bafybeibozpulxtpv5nhfa2ue3dcjx23ndh3gwr5vwllk7ptoyfwnfjjr4q/</code> (IPFS with  CID v1)</li>
 <li><code>/ipns/opendal.apache.org/</code> (IPNS)</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.endpoint" class="method"><a class="srclink rightside" href="../../src/opendal/services/ipfs/backend.rs.html#123-130">source</a><h4 class="code-header">pub fn <a href="#method.endpoint" class="fn">endpoint</a>(&amp;mut self, endpoint: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/pr [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.endpoint" class="method"><a class="srclink rightside" href="../../src/opendal/services/ipfs/backend.rs.html#122-129">source</a><h4 class="code-header">pub fn <a href="#method.endpoint" class="fn">endpoint</a>(&amp;mut self, endpoint: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/pr [...]
 <p>Endpoint must be a valid ipfs gateway which passed the <a href="https://ipfs.github.io/public-gateway-checker/">IPFS Gateway Checker</a></p>
 <p>Popular choices including:</p>
 <ul>
@@ -71,11 +71,11 @@ blocking</li>
 <li><code>https://cloudflare-ipfs.com</code></li>
 <li><code>http://127.0.0.1:8080</code> (ipfs daemon in local)</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.http_client" class="method"><a class="srclink rightside" href="../../src/opendal/services/ipfs/backend.rs.html#138-141">source</a><h4 class="code-header">pub fn <a href="#method.http_client" class="fn">http_client</a>(&amp;mut self, client: <a class="struct" href="../raw/struct.HttpClient.html" title="struct opendal::raw::HttpClient">HttpClient</a>) -&gt; <a class="primitive" href="https://doc.rust-la [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.http_client" class="method"><a class="srclink rightside" href="../../src/opendal/services/ipfs/backend.rs.html#137-140">source</a><h4 class="code-header">pub fn <a href="#method.http_client" class="fn">http_client</a>(&amp;mut self, client: <a class="struct" href="../raw/struct.HttpClient.html" title="struct opendal::raw::HttpClient">HttpClient</a>) -&gt; <a class="primitive" href="https://doc.rust-la [...]
 <h5 id="notes"><a href="#notes">Notes</a></h5>
 <p>This API is part of OpenDAL’s Raw API. <code>HttpClient</code> could be changed
 during minor updates.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-IpfsBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/ipfs/backend.rs.html#144-194">source</a><a href="#impl-Builder-for-IpfsBuilder" class="anchor">§</a><h [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-IpfsBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/ipfs/backend.rs.html#143-193">source</a><a href="#impl-Builder-for-IpfsBuilder" class="anchor">§</a><h [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/services/struct.Obs.html b/docs/rust/opendal/services/struct.Obs.html
index 40d84039..6ffb45d8 100644
--- a/docs/rust/opendal/services/struct.Obs.html
+++ b/docs/rust/opendal/services/struct.Obs.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Huawei Cloud OBS services support."><title>Obs in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../ [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Huawei Cloud OBS services support."><title>Obs in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../ [...]
 <h2 id="capabilities"><a href="#capabilities">Capabilities</a></h2>
 <p>This service can be used to:</p>
 <ul>
@@ -58,9 +58,9 @@ blocking</li>
 
     <span class="prelude-val">Ok</span>(())
 }</code></pre></div>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-ObsBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/obs/backend.rs.html#117-187">source</a><a href="#impl-ObsBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Obs.html" title [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-ObsBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/obs/backend.rs.html#116-186">source</a><a href="#impl-ObsBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Obs.html" title [...]
 <p>All operations will happen under this root.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.endpoint" class="method"><a class="srclink rightside" href="../../src/opendal/services/obs/backend.rs.html#137-143">source</a><h4 class="code-header">pub fn <a href="#method.endpoint" class="fn">endpoint</a>(&amp;mut self, endpoint: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/pri [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.endpoint" class="method"><a class="srclink rightside" href="../../src/opendal/services/obs/backend.rs.html#136-142">source</a><h4 class="code-header">pub fn <a href="#method.endpoint" class="fn">endpoint</a>(&amp;mut self, endpoint: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/pri [...]
 <p>Both huaweicloud default domain and user domain endpoints are allowed.
 Please DO NOT add the bucket name to the endpoint.</p>
 <ul>
@@ -68,23 +68,23 @@ Please DO NOT add the bucket name to the endpoint.</p>
 <li><code>obs.cn-north-4.myhuaweicloud.com</code> (https by default)</li>
 <li><code>https://custom.obs.com</code> (port should not be set)</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.access_key_id" class="method"><a class="srclink rightside" href="../../src/opendal/services/obs/backend.rs.html#148-154">source</a><h4 class="code-header">pub fn <a href="#method.access_key_id" class="fn">access_key_id</a>(&amp;mut self, access_key_id: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lan [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.access_key_id" class="method"><a class="srclink rightside" href="../../src/opendal/services/obs/backend.rs.html#147-153">source</a><h4 class="code-header">pub fn <a href="#method.access_key_id" class="fn">access_key_id</a>(&amp;mut self, access_key_id: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lan [...]
 <ul>
 <li>If it is set, we will take user’s input first.</li>
 <li>If not, we will try to load it from environment.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.secret_access_key" class="method"><a class="srclink rightside" href="../../src/opendal/services/obs/backend.rs.html#159-165">source</a><h4 class="code-header">pub fn <a href="#method.secret_access_key" class="fn">secret_access_key</a>(&amp;mut self, secret_access_key: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="http [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.secret_access_key" class="method"><a class="srclink rightside" href="../../src/opendal/services/obs/backend.rs.html#158-164">source</a><h4 class="code-header">pub fn <a href="#method.secret_access_key" class="fn">secret_access_key</a>(&amp;mut self, secret_access_key: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="http [...]
 <ul>
 <li>If it is set, we will take user’s input first.</li>
 <li>If not, we will try to load it from environment.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.bucket" class="method"><a class="srclink rightside" href="../../src/opendal/services/obs/backend.rs.html#169-175">source</a><h4 class="code-header">pub fn <a href="#method.bucket" class="fn">bucket</a>(&amp;mut self, bucket: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.r [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.bucket" class="method"><a class="srclink rightside" href="../../src/opendal/services/obs/backend.rs.html#168-174">source</a><h4 class="code-header">pub fn <a href="#method.bucket" class="fn">bucket</a>(&amp;mut self, bucket: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.r [...]
 The param is required.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.http_client" class="method"><a class="srclink rightside" href="../../src/opendal/services/obs/backend.rs.html#183-186">source</a><h4 class="code-header">pub fn <a href="#method.http_client" class="fn">http_client</a>(&amp;mut self, client: <a class="struct" href="../raw/struct.HttpClient.html" title="struct opendal::raw::HttpClient">HttpClient</a>) -&gt; <a class="primitive" href="https://doc.rust-lan [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.http_client" class="method"><a class="srclink rightside" href="../../src/opendal/services/obs/backend.rs.html#182-185">source</a><h4 class="code-header">pub fn <a href="#method.http_client" class="fn">http_client</a>(&amp;mut self, client: <a class="struct" href="../raw/struct.HttpClient.html" title="struct opendal::raw::HttpClient">HttpClient</a>) -&gt; <a class="primitive" href="https://doc.rust-lan [...]
 <h5 id="notes"><a href="#notes">Notes</a></h5>
 <p>This API is part of OpenDAL’s Raw API. <code>HttpClient</code> could be changed
 during minor updates.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-ObsBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/obs/backend.rs.html#189-290">source</a><a href="#impl-Builder-for-ObsBuilder" class="anchor">§</a><h3 c [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-ObsBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/obs/backend.rs.html#188-289">source</a><a href="#impl-Builder-for-ObsBuilder" class="anchor">§</a><h3 c [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/services/struct.Oss.html b/docs/rust/opendal/services/struct.Oss.html
index 530b05fe..31b406ad 100644
--- a/docs/rust/opendal/services/struct.Oss.html
+++ b/docs/rust/opendal/services/struct.Oss.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Aliyun Object Storage Service (OSS) support"><title>Oss in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin hre [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Aliyun Object Storage Service (OSS) support"><title>Oss in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin hre [...]
 <h2 id="capabilities"><a href="#capabilities">Capabilities</a></h2>
 <p>This service can be used to:</p>
 <ul>
@@ -75,11 +75,11 @@ blocking</li>
 
     <span class="prelude-val">Ok</span>(())
 }</code></pre></div>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-OssBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/oss/backend.rs.html#148-312">source</a><a href="#impl-OssBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Oss.html" title [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-OssBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/oss/backend.rs.html#147-311">source</a><a href="#impl-OssBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Oss.html" title [...]
 <p>All operations will happen under this root.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.bucket" class="method"><a class="srclink rightside" href="../../src/opendal/services/oss/backend.rs.html#163-167">source</a><h4 class="code-header">pub fn <a href="#method.bucket" class="fn">bucket</a>(&amp;mut self, bucket: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.r [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.endpoint" class="method"><a class="srclink rightside" href="../../src/opendal/services/oss/backend.rs.html#170-177">source</a><h4 class="code-header">pub fn <a href="#method.endpoint" class="fn">endpoint</a>(&amp;mut self, endpoint: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/pri [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.presign_endpoint" class="method"><a class="srclink rightside" href="../../src/opendal/services/oss/backend.rs.html#187-194">source</a><h4 class="code-header">pub fn <a href="#method.presign_endpoint" class="fn">presign_endpoint</a>(&amp;mut self, endpoint: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.bucket" class="method"><a class="srclink rightside" href="../../src/opendal/services/oss/backend.rs.html#162-166">source</a><h4 class="code-header">pub fn <a href="#method.bucket" class="fn">bucket</a>(&amp;mut self, bucket: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.r [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.endpoint" class="method"><a class="srclink rightside" href="../../src/opendal/services/oss/backend.rs.html#169-176">source</a><h4 class="code-header">pub fn <a href="#method.endpoint" class="fn">endpoint</a>(&amp;mut self, endpoint: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/pri [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.presign_endpoint" class="method"><a class="srclink rightside" href="../../src/opendal/services/oss/backend.rs.html#186-193">source</a><h4 class="code-header">pub fn <a href="#method.presign_endpoint" class="fn">presign_endpoint</a>(&amp;mut self, endpoint: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust [...]
 <p>You can offer a public endpoint like <a href="https://oss-cn-beijing.aliyuncs.com">https://oss-cn-beijing.aliyuncs.com</a> to return a presinged url for
 public accessors, along with an internal endpoint like <a href="https://oss-cn-beijing-internal.aliyuncs.com">https://oss-cn-beijing-internal.aliyuncs.com</a>
 to access objects in a faster path.</p>
@@ -87,21 +87,21 @@ to access objects in a faster path.</p>
 <li>If presign_endpoint is set, we will use presign_endpoint on generating presigned urls.</li>
 <li>if not, we will use endpoint as default.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.access_key_id" class="method"><a class="srclink rightside" href="../../src/opendal/services/oss/backend.rs.html#200-206">source</a><h4 class="code-header">pub fn <a href="#method.access_key_id" class="fn">access_key_id</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0 [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.access_key_id" class="method"><a class="srclink rightside" href="../../src/opendal/services/oss/backend.rs.html#199-205">source</a><h4 class="code-header">pub fn <a href="#method.access_key_id" class="fn">access_key_id</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0 [...]
 <ul>
 <li>If access_key_id is set, we will take user’s input first.</li>
 <li>If not, we will try to load it from environment.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.access_key_secret" class="method"><a class="srclink rightside" href="../../src/opendal/services/oss/backend.rs.html#212-218">source</a><h4 class="code-header">pub fn <a href="#method.access_key_secret" class="fn">access_key_secret</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lan [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.access_key_secret" class="method"><a class="srclink rightside" href="../../src/opendal/services/oss/backend.rs.html#211-217">source</a><h4 class="code-header">pub fn <a href="#method.access_key_secret" class="fn">access_key_secret</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lan [...]
 <ul>
 <li>If access_key_secret is set, we will take user’s input first.</li>
 <li>If not, we will try to load it from environment.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.http_client" class="method"><a class="srclink rightside" href="../../src/opendal/services/oss/backend.rs.html#226-229">source</a><h4 class="code-header">pub fn <a href="#method.http_client" class="fn">http_client</a>(&amp;mut self, client: <a class="struct" href="../raw/struct.HttpClient.html" title="struct opendal::raw::HttpClient">HttpClient</a>) -&gt; <a class="primitive" href="https://doc.rust-lan [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.http_client" class="method"><a class="srclink rightside" href="../../src/opendal/services/oss/backend.rs.html#225-228">source</a><h4 class="code-header">pub fn <a href="#method.http_client" class="fn">http_client</a>(&amp;mut self, client: <a class="struct" href="../raw/struct.HttpClient.html" title="struct opendal::raw::HttpClient">HttpClient</a>) -&gt; <a class="primitive" href="https://doc.rust-lan [...]
 <h5 id="notes"><a href="#notes">Notes</a></h5>
 <p>This API is part of OpenDAL’s Raw API. <code>HttpClient</code> could be changed
 during minor updates.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption" class="method"><a class="srclink rightside" href="../../src/opendal/services/oss/backend.rs.html#286-291">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption" class="fn">server_side_encryption</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption" class="method"><a class="srclink rightside" href="../../src/opendal/services/oss/backend.rs.html#285-290">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption" class="fn">server_side_encryption</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https [...]
 <p>Available values: <code>AES256</code>, <code>KMS</code>.</p>
 <p>Reference: <a href="https://www.alibabacloud.com/help/en/object-storage-service/latest/server-side-encryption-5">https://www.alibabacloud.com/help/en/object-storage-service/latest/server-side-encryption-5</a>
 Brief explanation:
@@ -115,12 +115,12 @@ SSE-KMS:
 or not specify the specific CMK ID for OSS-managed KMS key.
 3. Include the <code>x-oss-server-side-encryption</code> parameter in the request and set its value to KMS.
 4. If a specific CMK ID is specified, include the <code>x-oss-server-side-encryption-key-id</code> parameter in the request, and set its value to the specified CMK ID.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_key_id" class="method"><a class="srclink rightside" href="../../src/opendal/services/oss/backend.rs.html#298-303">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_key_id" class="fn">server_side_encryption_key_id</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="p [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_key_id" class="method"><a class="srclink rightside" href="../../src/opendal/services/oss/backend.rs.html#297-302">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_key_id" class="fn">server_side_encryption_key_id</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="p [...]
 <h5 id="notes-1"><a href="#notes-1">Notes</a></h5>
 <p>This option only takes effect when server_side_encryption equals to KMS.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.write_min_size" class="method"><a class="srclink rightside" href="../../src/opendal/services/oss/backend.rs.html#307-311">source</a><h4 class="code-header">pub fn <a href="#method.write_min_size" class="fn">write_min_size</a>(&amp;mut self, write_min_size: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.usize.html">usize</a>) -&gt; <a class="primitive" href="https://doc.rust- [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.write_min_size" class="method"><a class="srclink rightside" href="../../src/opendal/services/oss/backend.rs.html#306-310">source</a><h4 class="code-header">pub fn <a href="#method.write_min_size" class="fn">write_min_size</a>(&amp;mut self, write_min_size: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.usize.html">usize</a>) -&gt; <a class="primitive" href="https://doc.rust- [...]
 Reference: <a href="https://www.alibabacloud.com/help/en/object-storage-service/latest/multipart-upload-6">OSS Multipart upload</a></p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-OssBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/oss/backend.rs.html#314-432">source</a><a href="#impl-Builder-for-OssBuilder" class="anchor">§</a><h3 c [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-OssBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/oss/backend.rs.html#313-431">source</a><a href="#impl-Builder-for-OssBuilder" class="anchor">§</a><h3 c [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/services/struct.S3.html b/docs/rust/opendal/services/struct.S3.html
index f5fa7d90..a878d12c 100644
--- a/docs/rust/opendal/services/struct.S3.html
+++ b/docs/rust/opendal/services/struct.S3.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Aws S3 and compatible services (including minio, digitalocean space, Tencent Cloud Object Storage(COS) and so on) support. For more information about s3-compatible services, refer to Compatible Services."><title>S3 in opendal::services - Rust</title><link rel="preload" as="font" type="fo [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Aws S3 and compatible services (including minio, digitalocean space, Tencent Cloud Object Storage(COS) and so on) support. For more information about s3-compatible services, refer to Compatible Services."><title>S3 in opendal::services - Rust</title><link rel="preload" as="font" type="fo [...]
 For more information about s3-compatible services, refer to <a href="#compatible-services">Compatible Services</a>.</p>
 <h2 id="capabilities"><a href="#capabilities">Capabilities</a></h2>
 <p>This service can be used to:</p>
@@ -291,10 +291,10 @@ builder.bucket(<span class="string">&quot;&lt;bucket_name&gt;&quot;</span>);</co
 <blockquote>
 <p>Refer to <a href="https://wasabi-support.zendesk.com/hc/en-us/articles/360015106031">What are the service URLs for Wasabi’s different storage regions?</a> for more details.</p>
 </blockquote>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-S3Builder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#333-735">source</a><a href="#impl-S3Builder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.S3.html" title="st [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-S3Builder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#332-734">source</a><a href="#impl-S3Builder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.S3.html" title="st [...]
 <p>All operations will happen under this root.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.bucket" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#348-352">source</a><h4 class="code-header">pub fn <a href="#method.bucket" class="fn">bucket</a>(&amp;mut self, bucket: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.re [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.endpoint" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#365-372">source</a><h4 class="code-header">pub fn <a href="#method.endpoint" class="fn">endpoint</a>(&amp;mut self, endpoint: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/prim [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.bucket" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#347-351">source</a><h4 class="code-header">pub fn <a href="#method.bucket" class="fn">bucket</a>(&amp;mut self, bucket: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.re [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.endpoint" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#364-371">source</a><h4 class="code-header">pub fn <a href="#method.endpoint" class="fn">endpoint</a>(&amp;mut self, endpoint: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/prim [...]
 <p>Endpoint must be full uri, e.g.</p>
 <ul>
 <li>AWS S3: <code>https://s3.amazonaws.com</code> or <code>https://s3.{region}.amazonaws.com</code></li>
@@ -304,26 +304,26 @@ builder.bucket(<span class="string">&quot;&lt;bucket_name&gt;&quot;</span>);</co
 </ul>
 <p>If user inputs endpoint without scheme like “s3.amazonaws.com”, we
 will prepend “https://” before it.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.region" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#380-386">source</a><h4 class="code-header">pub fn <a href="#method.region" class="fn">region</a>(&amp;mut self, region: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.re [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.region" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#379-385">source</a><h4 class="code-header">pub fn <a href="#method.region" class="fn">region</a>(&amp;mut self, region: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.re [...]
 if you are using the default AWS S3 endpoint.</p>
 <p>If using a custom endpoint,</p>
 <ul>
 <li>If region is set, we will take user’s input first.</li>
 <li>If not, the default <code>us-east-1</code> will be used.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.access_key_id" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#392-398">source</a><h4 class="code-header">pub fn <a href="#method.access_key_id" class="fn">access_key_id</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/ [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.access_key_id" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#391-397">source</a><h4 class="code-header">pub fn <a href="#method.access_key_id" class="fn">access_key_id</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/ [...]
 <ul>
 <li>If access_key_id is set, we will take user’s input first.</li>
 <li>If not, we will try to load it from environment.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.secret_access_key" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#404-410">source</a><h4 class="code-header">pub fn <a href="#method.secret_access_key" class="fn">secret_access_key</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.secret_access_key" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#403-409">source</a><h4 class="code-header">pub fn <a href="#method.secret_access_key" class="fn">secret_access_key</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang [...]
 <ul>
 <li>If secret_access_key is set, we will take user’s input first.</li>
 <li>If not, we will try to load it from environment.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.role_arn" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#413-419">source</a><h4 class="code-header">pub fn <a href="#method.role_arn" class="fn">role_arn</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.r [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.external_id" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#422-428">source</a><h4 class="code-header">pub fn <a href="#method.external_id" class="fn">external_id</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/pr [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.default_storage_class" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#442-448">source</a><h4 class="code-header">pub fn <a href="#method.default_storage_class" class="fn">default_storage_class</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://d [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.role_arn" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#412-418">source</a><h4 class="code-header">pub fn <a href="#method.role_arn" class="fn">role_arn</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.r [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.external_id" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#421-427">source</a><h4 class="code-header">pub fn <a href="#method.external_id" class="fn">external_id</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/pr [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.default_storage_class" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#441-447">source</a><h4 class="code-header">pub fn <a href="#method.default_storage_class" class="fn">default_storage_class</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://d [...]
 <p>Available values:</p>
 <ul>
 <li><code>DEEP_ARCHIVE</code></li>
@@ -336,13 +336,13 @@ if you are using the default AWS S3 endpoint.</p>
 <li><code>STANDARD</code></li>
 <li><code>STANDARD_IA</code></li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#460-466">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption" class="fn">server_side_encryption</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https: [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#459-465">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption" class="fn">server_side_encryption</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https: [...]
 <p>Available values: <code>AES256</code>, <code>aws:kms</code>.</p>
 <h5 id="note"><a href="#note">Note</a></h5>
 <p>This function is the low-level setting for SSE related features.</p>
 <p>SSE related options should be set carefully to make them works.
 Please use <code>server_side_encryption_with_*</code> helpers if even possible.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_aws_kms_key_id" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#485-491">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_aws_kms_key_id" class="fn">server_side_encryption_aws_kms_key_id</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_aws_kms_key_id" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#484-490">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_aws_kms_key_id" class="fn">server_side_encryption_aws_kms_key_id</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str [...]
 <ul>
 <li>If <code>server_side_encryption</code> set to <code>aws:kms</code>, and <code>server_side_encryption_aws_kms_key_id</code>
 is not set, S3 will use aws managed kms key to encrypt data.</li>
@@ -357,13 +357,13 @@ is a noop.</li>
 <p>This function is the low-level setting for SSE related features.</p>
 <p>SSE related options should be set carefully to make them works.
 Please use <code>server_side_encryption_with_*</code> helpers if even possible.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_customer_algorithm" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#503-509">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_customer_algorithm" class="fn">server_side_encryption_customer_algorithm</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.s [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_customer_algorithm" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#502-508">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_customer_algorithm" class="fn">server_side_encryption_customer_algorithm</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.s [...]
 <p>Available values: <code>AES256</code>.</p>
 <h5 id="note-2"><a href="#note-2">Note</a></h5>
 <p>This function is the low-level setting for SSE related features.</p>
 <p>SSE related options should be set carefully to make them works.
 Please use <code>server_side_encryption_with_*</code> helpers if even possible.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_customer_key" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#524-530">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_customer_key" class="fn">server_side_encryption_customer_key</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>)  [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_customer_key" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#523-529">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_customer_key" class="fn">server_side_encryption_customer_key</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>)  [...]
 <h5 id="args"><a href="#args">Args</a></h5>
 <p><code>v</code>: base64 encoded key that matches algorithm specified in
 <code>server_side_encryption_customer_algorithm</code>.</p>
@@ -371,64 +371,64 @@ Please use <code>server_side_encryption_with_*</code> helpers if even possible.<
 <p>This function is the low-level setting for SSE related features.</p>
 <p>SSE related options should be set carefully to make them works.
 Please use <code>server_side_encryption_with_*</code> helpers if even possible.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_customer_key_md5" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#544-550">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_customer_key_md5" class="fn">server_side_encryption_customer_key_md5</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.htm [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_customer_key_md5" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#543-549">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_customer_key_md5" class="fn">server_side_encryption_customer_key_md5</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.htm [...]
 <h5 id="args-1"><a href="#args-1">Args</a></h5>
 <p><code>v</code>: MD5 digest of key specified in <code>server_side_encryption_customer_key</code>.</p>
 <h5 id="note-4"><a href="#note-4">Note</a></h5>
 <p>This function is the low-level setting for SSE related features.</p>
 <p>SSE related options should be set carefully to make them works.
 Please use <code>server_side_encryption_with_*</code> helpers if even possible.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_with_aws_managed_kms_key" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#557-560">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_with_aws_managed_kms_key" class="fn">server_side_encryption_with_aws_managed_kms_key</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0 [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_with_aws_managed_kms_key" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#556-559">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_with_aws_managed_kms_key" class="fn">server_side_encryption_with_aws_managed_kms_key</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0 [...]
 <p>As known as: SSE-KMS</p>
 <p>NOTE: This function should not be used along with other <code>server_side_encryption_with_</code> functions.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_with_customer_managed_kms_key" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#567-574">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_with_customer_managed_kms_key" class="fn">server_side_encryption_with_customer_managed_kms_key</a>(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_with_customer_managed_kms_key" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#566-573">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_with_customer_managed_kms_key" class="fn">server_side_encryption_with_customer_managed_kms_key</a>(
     &amp;mut self,
     aws_kms_key_id: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>
 ) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a></h4></section></summary><div class="docblock"><p>Enable server side encryption with customer managed kms key</p>
 <p>As known as: SSE-KMS</p>
 <p>NOTE: This function should not be used along with other <code>server_side_encryption_with_</code> functions.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_with_s3_key" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#581-584">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_with_s3_key" class="fn">server_side_encryption_with_s3_key</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_with_s3_key" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#580-583">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_with_s3_key" class="fn">server_side_encryption_with_s3_key</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut [...]
 <p>As known as: SSE-S3</p>
 <p>NOTE: This function should not be used along with other <code>server_side_encryption_with_</code> functions.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_with_customer_key" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#591-601">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_with_customer_key" class="fn">server_side_encryption_with_customer_key</a>(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_with_customer_key" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#590-600">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_with_customer_key" class="fn">server_side_encryption_with_customer_key</a>(
     &amp;mut self,
     algorithm: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
     key: &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.u8.html">u8</a>]
 ) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a></h4></section></summary><div class="docblock"><p>Enable server side encryption with customer key.</p>
 <p>As known as: SSE-C</p>
 <p>NOTE: This function should not be used along with other <code>server_side_encryption_with_</code> functions.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.security_token" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#608-613">source</a><h4 class="code-header">pub fn <a href="#method.security_token" class="fn">security_token</a>(&amp;mut self, token: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/ [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.security_token" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#607-612">source</a><h4 class="code-header">pub fn <a href="#method.security_token" class="fn">security_token</a>(&amp;mut self, token: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/ [...]
 <h5 id="warning"><a href="#warning">Warning</a></h5>
 <p>security token’s lifetime is short and requires users to refresh in time.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.disable_config_load" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#622-625">source</a><h4 class="code-header">pub fn <a href="#method.disable_config_load" class="fn">disable_config_load</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a></h4></section></summary><div class= [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.disable_config_load" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#621-624">source</a><h4 class="code-header">pub fn <a href="#method.disable_config_load" class="fn">disable_config_load</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a></h4></section></summary><div class= [...]
 environment.</p>
 <p>For examples:</p>
 <ul>
 <li>envs like <code>AWS_ACCESS_KEY_ID</code></li>
 <li>files like <code>~/.aws/config</code></li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.disable_ec2_metadata" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#631-634">source</a><h4 class="code-header">pub fn <a href="#method.disable_ec2_metadata" class="fn">disable_ec2_metadata</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a></h4></section></summary><div cla [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.disable_ec2_metadata" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#630-633">source</a><h4 class="code-header">pub fn <a href="#method.disable_ec2_metadata" class="fn">disable_ec2_metadata</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a></h4></section></summary><div cla [...]
 <p>This option is used to disable the default behavior of opendal
 to load credential from ec2 metadata, a.k.a, IMDSv2</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.allow_anonymous" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#638-641">source</a><h4 class="code-header">pub fn <a href="#method.allow_anonymous" class="fn">allow_anonymous</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a></h4></section></summary><div class="docblock">< [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.allow_anonymous" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#637-640">source</a><h4 class="code-header">pub fn <a href="#method.allow_anonymous" class="fn">allow_anonymous</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a></h4></section></summary><div class="docblock">< [...]
 when credentail is not loaded.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.enable_virtual_host_style" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#648-651">source</a><h4 class="code-header">pub fn <a href="#method.enable_virtual_host_style" class="fn">enable_virtual_host_style</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a></h4></section></s [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.enable_virtual_host_style" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#647-650">source</a><h4 class="code-header">pub fn <a href="#method.enable_virtual_host_style" class="fn">enable_virtual_host_style</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a></h4></section></s [...]
 in virtual host style instead of path style.</p>
 <ul>
 <li>By default, opendal will send API to <code>https://s3.us-east-1.amazonaws.com/bucket_name</code></li>
 <li>Enabled, opendal will send API to <code>https://bucket_name.s3.us-east-1.amazonaws.com</code></li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.customed_credential_load" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#654-657">source</a><h4 class="code-header">pub fn <a href="#method.customed_credential_load" class="fn">customed_credential_load</a>(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.customed_credential_load" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#653-656">source</a><h4 class="code-header">pub fn <a href="#method.customed_credential_load" class="fn">customed_credential_load</a>(
     &amp;mut self,
     cred: <a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn AwsCredentialLoad&gt;
 ) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a></h4></section></summary><div class="docblock"><p>Adding a customed credential load for service.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.http_client" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#665-668">source</a><h4 class="code-header">pub fn <a href="#method.http_client" class="fn">http_client</a>(&amp;mut self, client: <a class="struct" href="../raw/struct.HttpClient.html" title="struct opendal::raw::HttpClient">HttpClient</a>) -&gt; <a class="primitive" href="https://doc.rust-lang [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.http_client" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#664-667">source</a><h4 class="code-header">pub fn <a href="#method.http_client" class="fn">http_client</a>(&amp;mut self, client: <a class="struct" href="../raw/struct.HttpClient.html" title="struct opendal::raw::HttpClient">HttpClient</a>) -&gt; <a class="primitive" href="https://doc.rust-lang [...]
 <h5 id="notes"><a href="#notes">Notes</a></h5>
 <p>This API is part of OpenDAL’s Raw API. <code>HttpClient</code> could be changed
 during minor updates.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.write_min_size" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#730-734">source</a><h4 class="code-header">pub fn <a href="#method.write_min_size" class="fn">write_min_size</a>(&amp;mut self, write_min_size: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.usize.html">usize</a>) -&gt; <a class="primitive" href="https://doc.rust-l [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.write_min_size" class="method"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#729-733">source</a><h4 class="code-header">pub fn <a href="#method.write_min_size" class="fn">write_min_size</a>(&amp;mut self, write_min_size: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.usize.html">usize</a>) -&gt; <a class="primitive" href="https://doc.rust-l [...]
 Reference: <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/qfacts.html">Amazon S3 multipart upload limits</a></p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-S3Builder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#737-942">source</a><a href="#impl-Builder-for-S3Builder" class="anchor">§</a><h3 clas [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-S3Builder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/s3/backend.rs.html#736-941">source</a><a href="#impl-Builder-for-S3Builder" class="anchor">§</a><h3 clas [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/services/struct.Sftp.html b/docs/rust/opendal/services/struct.Sftp.html
index f39a22c4..3949068b 100644
--- a/docs/rust/opendal/services/struct.Sftp.html
+++ b/docs/rust/opendal/services/struct.Sftp.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="SFTP services support. (only works on unix)"><title>Sftp in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin hr [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="SFTP services support. (only works on unix)"><title>Sftp in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin hr [...]
 <p>Warning: Maximum number of file holdings is depend on the remote system configuration.
 For example, the default value is 255 in macos, and 1024 in linux. If you want to open
 lots of files, you should pay attention to close the file after using it.</p>
@@ -58,20 +58,20 @@ blocking</li>
     <span class="kw">let </span>_obj: Object = op.object(<span class="string">&quot;test_file&quot;</span>);
     <span class="prelude-val">Ok</span>(())
 }</code></pre></div>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-SftpBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/sftp/backend.rs.html#121-188">source</a><a href="#impl-SftpBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Sftp.html" t [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.root" class="method"><a class="srclink rightside" href="../../src/opendal/services/sftp/backend.rs.html#134-142">source</a><h4 class="code-header">pub fn <a href="#method.root" class="fn">root</a>(&amp;mut self, root: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.referenc [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.user" class="method"><a class="srclink rightside" href="../../src/opendal/services/sftp/backend.rs.html#145-153">source</a><h4 class="code-header">pub fn <a href="#method.user" class="fn">user</a>(&amp;mut self, user: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.referenc [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.key" class="method"><a class="srclink rightside" href="../../src/opendal/services/sftp/backend.rs.html#156-164">source</a><h4 class="code-header">pub fn <a href="#method.key" class="fn">key</a>(&amp;mut self, key: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.ht [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.known_hosts_strategy" class="method"><a class="srclink rightside" href="../../src/opendal/services/sftp/backend.rs.html#171-179">source</a><h4 class="code-header">pub fn <a href="#method.known_hosts_strategy" class="fn">known_hosts_strategy</a>(&amp;mut self, strategy: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="htt [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-SftpBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/sftp/backend.rs.html#120-187">source</a><a href="#impl-SftpBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Sftp.html" t [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.root" class="method"><a class="srclink rightside" href="../../src/opendal/services/sftp/backend.rs.html#133-141">source</a><h4 class="code-header">pub fn <a href="#method.root" class="fn">root</a>(&amp;mut self, root: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.referenc [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.user" class="method"><a class="srclink rightside" href="../../src/opendal/services/sftp/backend.rs.html#144-152">source</a><h4 class="code-header">pub fn <a href="#method.user" class="fn">user</a>(&amp;mut self, user: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.referenc [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.key" class="method"><a class="srclink rightside" href="../../src/opendal/services/sftp/backend.rs.html#155-163">source</a><h4 class="code-header">pub fn <a href="#method.key" class="fn">key</a>(&amp;mut self, key: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.ht [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.known_hosts_strategy" class="method"><a class="srclink rightside" href="../../src/opendal/services/sftp/backend.rs.html#170-178">source</a><h4 class="code-header">pub fn <a href="#method.known_hosts_strategy" class="fn">known_hosts_strategy</a>(&amp;mut self, strategy: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="htt [...]
 available values:</p>
 <ul>
 <li>Strict (default)</li>
 <li>Accept</li>
 <li>Add</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.enable_copy" class="method"><a class="srclink rightside" href="../../src/opendal/services/sftp/backend.rs.html#183-187">source</a><h4 class="code-header">pub fn <a href="#method.enable_copy" class="fn">enable_copy</a>(&amp;mut self, enable_copy: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69 [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.enable_copy" class="method"><a class="srclink rightside" href="../../src/opendal/services/sftp/backend.rs.html#182-186">source</a><h4 class="code-header">pub fn <a href="#method.enable_copy" class="fn">enable_copy</a>(&amp;mut self, enable_copy: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69 [...]
 It requires the server supports copy-file extension.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-SftpBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/sftp/backend.rs.html#190-256">source</a><a href="#impl-Builder-for-SftpBuilder" class="anchor">§</a><h [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-SftpBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/sftp/backend.rs.html#189-255">source</a><a href="#impl-Builder-for-SftpBuilder" class="anchor">§</a><h [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/services/struct.Supabase.html b/docs/rust/opendal/services/struct.Supabase.html
index d5525844..d422c034 100644
--- a/docs/rust/opendal/services/struct.Supabase.html
+++ b/docs/rust/opendal/services/struct.Supabase.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Supabase service"><title>Supabase in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/ [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Supabase service"><title>Supabase in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/ [...]
 <h2 id="capabilities"><a href="#capabilities">Capabilities</a></h2>
 <ul>
 <li><input disabled="" type="checkbox" checked=""/>
@@ -53,18 +53,18 @@ can access all resources. Note that if you want to read public resources, do not
 
     <span class="prelude-val">Ok</span>(())
 }</code></pre></div>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-SupabaseBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/supabase/backend.rs.html#107-157">source</a><a href="#impl-SupabaseBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct. [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-SupabaseBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/supabase/backend.rs.html#106-156">source</a><a href="#impl-SupabaseBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct. [...]
 <p>All operations will happen under this root.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.bucket" class="method"><a class="srclink rightside" href="../../src/opendal/services/supabase/backend.rs.html#122-125">source</a><h4 class="code-header">pub fn <a href="#method.bucket" class="fn">bucket</a>(&amp;mut self, bucket: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primit [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.endpoint" class="method"><a class="srclink rightside" href="../../src/opendal/services/supabase/backend.rs.html#130-138">source</a><h4 class="code-header">pub fn <a href="#method.endpoint" class="fn">endpoint</a>(&amp;mut self, endpoint: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/st [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.bucket" class="method"><a class="srclink rightside" href="../../src/opendal/services/supabase/backend.rs.html#121-124">source</a><h4 class="code-header">pub fn <a href="#method.bucket" class="fn">bucket</a>(&amp;mut self, bucket: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primit [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.endpoint" class="method"><a class="srclink rightside" href="../../src/opendal/services/supabase/backend.rs.html#129-137">source</a><h4 class="code-header">pub fn <a href="#method.endpoint" class="fn">endpoint</a>(&amp;mut self, endpoint: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/st [...]
 <p>Endpoint must be full uri</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.key" class="method"><a class="srclink rightside" href="../../src/opendal/services/supabase/backend.rs.html#142-145">source</a><h4 class="code-header">pub fn <a href="#method.key" class="fn">key</a>(&amp;mut self, key: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.referenc [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.key" class="method"><a class="srclink rightside" href="../../src/opendal/services/supabase/backend.rs.html#141-144">source</a><h4 class="code-header">pub fn <a href="#method.key" class="fn">key</a>(&amp;mut self, key: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.referenc [...]
 Do not set this key if you want to read public bucket</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.http_client" class="method"><a class="srclink rightside" href="../../src/opendal/services/supabase/backend.rs.html#153-156">source</a><h4 class="code-header">pub fn <a href="#method.http_client" class="fn">http_client</a>(&amp;mut self, client: <a class="struct" href="../raw/struct.HttpClient.html" title="struct opendal::raw::HttpClient">HttpClient</a>) -&gt; <a class="primitive" href="https://doc.rus [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.http_client" class="method"><a class="srclink rightside" href="../../src/opendal/services/supabase/backend.rs.html#152-155">source</a><h4 class="code-header">pub fn <a href="#method.http_client" class="fn">http_client</a>(&amp;mut self, client: <a class="struct" href="../raw/struct.HttpClient.html" title="struct opendal::raw::HttpClient">HttpClient</a>) -&gt; <a class="primitive" href="https://doc.rus [...]
 <h5 id="notes"><a href="#notes">Notes</a></h5>
 <p>This API is part of OpenDAL’s Raw API. <code>HttpClient</code> could be changed
 during minor updates.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-SupabaseBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/supabase/backend.rs.html#159-199">source</a><a href="#impl-Builder-for-SupabaseBuilder" class="anc [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-SupabaseBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/supabase/backend.rs.html#158-198">source</a><a href="#impl-Builder-for-SupabaseBuilder" class="anc [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/services/struct.Wasabi.html b/docs/rust/opendal/services/struct.Wasabi.html
index 8d44001a..f642892b 100644
--- a/docs/rust/opendal/services/struct.Wasabi.html
+++ b/docs/rust/opendal/services/struct.Wasabi.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Wasabi (an aws S3 compatible service) support"><title>Wasabi in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigi [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Wasabi (an aws S3 compatible service) support"><title>Wasabi in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigi [...]
 <h2 id="capabilities"><a href="#capabilities">Capabilities</a></h2>
 <p>This service can be used to:</p>
 <ul>
@@ -212,34 +212,34 @@ blocking</li>
 
     </span><span class="prelude-val">Ok</span>(())
 }</code></pre></div>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-WasabiBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#322-699">source</a><a href="#impl-WasabiBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Wasabi [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-WasabiBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#321-698">source</a><a href="#impl-WasabiBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Wasabi [...]
 <p>All operations will happen under this root.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.bucket" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#337-341">source</a><h4 class="code-header">pub fn <a href="#method.bucket" class="fn">bucket</a>(&amp;mut self, bucket: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitiv [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.endpoint" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#351-358">source</a><h4 class="code-header">pub fn <a href="#method.endpoint" class="fn">endpoint</a>(&amp;mut self, endpoint: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/ [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.bucket" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#336-340">source</a><h4 class="code-header">pub fn <a href="#method.bucket" class="fn">bucket</a>(&amp;mut self, bucket: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitiv [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.endpoint" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#350-357">source</a><h4 class="code-header">pub fn <a href="#method.endpoint" class="fn">endpoint</a>(&amp;mut self, endpoint: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/ [...]
 <p>Endpoint must be full uri, e.g.</p>
 <ul>
 <li><code>https://s3.wasabisys.com</code> or <code>https://s3.{region}.wasabisys.com</code></li>
 </ul>
 <p>If user inputs endpoint without scheme like “s3.wasabisys.com”, we
 will prepend “https://” before it.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.region" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#364-370">source</a><h4 class="code-header">pub fn <a href="#method.region" class="fn">region</a>(&amp;mut self, region: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitiv [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.region" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#363-369">source</a><h4 class="code-header">pub fn <a href="#method.region" class="fn">region</a>(&amp;mut self, region: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitiv [...]
 <ul>
 <li>If region is set, we will take user’s input first.</li>
 <li>If not, the default <code>us-east-1</code> will be used.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.access_key_id" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#376-382">source</a><h4 class="code-header">pub fn <a href="#method.access_key_id" class="fn">access_key_id</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.6 [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.access_key_id" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#375-381">source</a><h4 class="code-header">pub fn <a href="#method.access_key_id" class="fn">access_key_id</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.6 [...]
 <ul>
 <li>If access_key_id is set, we will take user’s input first.</li>
 <li>If not, we will try to load it from environment.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.secret_access_key" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#388-394">source</a><h4 class="code-header">pub fn <a href="#method.secret_access_key" class="fn">secret_access_key</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust- [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.secret_access_key" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#387-393">source</a><h4 class="code-header">pub fn <a href="#method.secret_access_key" class="fn">secret_access_key</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust- [...]
 <ul>
 <li>If secret_access_key is set, we will take user’s input first.</li>
 <li>If not, we will try to load it from environment.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.role_arn" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#397-403">source</a><h4 class="code-header">pub fn <a href="#method.role_arn" class="fn">role_arn</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primiti [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.external_id" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#406-412">source</a><h4 class="code-header">pub fn <a href="#method.external_id" class="fn">external_id</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/st [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.default_storage_class" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#421-427">source</a><h4 class="code-header">pub fn <a href="#method.default_storage_class" class="fn">default_storage_class</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.role_arn" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#396-402">source</a><h4 class="code-header">pub fn <a href="#method.role_arn" class="fn">role_arn</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primiti [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.external_id" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#405-411">source</a><h4 class="code-header">pub fn <a href="#method.external_id" class="fn">external_id</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/st [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.default_storage_class" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#420-426">source</a><h4 class="code-header">pub fn <a href="#method.default_storage_class" class="fn">default_storage_class</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https [...]
 Unlike S3, wasabi only supports one single storage class,
 which is most like standard S3 storage class,
 check <code>https://docs.wasabi.com/docs/operations-on-objects</code> for more details.</p>
@@ -247,13 +247,13 @@ check <code>https://docs.wasabi.com/docs/operations-on-objects</code> for more d
 <ul>
 <li><code>STANDARD</code></li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#439-445">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption" class="fn">server_side_encryption</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="ht [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#438-444">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption" class="fn">server_side_encryption</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="ht [...]
 <p>Available values: <code>AES256</code>, <code>aws:kms</code>.</p>
 <h5 id="note"><a href="#note">Note</a></h5>
 <p>This function is the low-level setting for SSE related features.</p>
 <p>SSE related options should be set carefully to make them works.
 Please use <code>server_side_encryption_with_*</code> helpers if even possible.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_aws_kms_key_id" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#464-470">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_aws_kms_key_id" class="fn">server_side_encryption_aws_kms_key_id</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html" [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_aws_kms_key_id" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#463-469">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_aws_kms_key_id" class="fn">server_side_encryption_aws_kms_key_id</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html" [...]
 <ul>
 <li>If <code>server_side_encryption</code> set to <code>aws:kms</code>, and <code>server_side_encryption_aws_kms_key_id</code>
 is not set, S3 will use aws managed kms key to encrypt data.</li>
@@ -268,13 +268,13 @@ is a noop.</li>
 <p>This function is the low-level setting for SSE related features.</p>
 <p>SSE related options should be set carefully to make them works.
 Please use <code>server_side_encryption_with_*</code> helpers if even possible.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_customer_algorithm" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#482-488">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_customer_algorithm" class="fn">server_side_encryption_customer_algorithm</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primiti [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_customer_algorithm" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#481-487">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_customer_algorithm" class="fn">server_side_encryption_customer_algorithm</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primiti [...]
 <p>Available values: <code>AES256</code>.</p>
 <h5 id="note-2"><a href="#note-2">Note</a></h5>
 <p>This function is the low-level setting for SSE related features.</p>
 <p>SSE related options should be set carefully to make them works.
 Please use <code>server_side_encryption_with_*</code> helpers if even possible.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_customer_key" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#503-509">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_customer_key" class="fn">server_side_encryption_customer_key</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</ [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_customer_key" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#502-508">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_customer_key" class="fn">server_side_encryption_customer_key</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</ [...]
 <h5 id="args"><a href="#args">Args</a></h5>
 <p><code>v</code>: base64 encoded key that matches algorithm specified in
 <code>server_side_encryption_customer_algorithm</code>.</p>
@@ -282,60 +282,60 @@ Please use <code>server_side_encryption_with_*</code> helpers if even possible.<
 <p>This function is the low-level setting for SSE related features.</p>
 <p>SSE related options should be set carefully to make them works.
 Please use <code>server_side_encryption_with_*</code> helpers if even possible.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_customer_key_md5" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#523-529">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_customer_key_md5" class="fn">server_side_encryption_customer_key_md5</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_customer_key_md5" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#522-528">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_customer_key_md5" class="fn">server_side_encryption_customer_key_md5</a>(&amp;mut self, v: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str [...]
 <h5 id="args-1"><a href="#args-1">Args</a></h5>
 <p><code>v</code>: MD5 digest of key specified in <code>server_side_encryption_customer_key</code>.</p>
 <h5 id="note-4"><a href="#note-4">Note</a></h5>
 <p>This function is the low-level setting for SSE related features.</p>
 <p>SSE related options should be set carefully to make them works.
 Please use <code>server_side_encryption_with_*</code> helpers if even possible.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_with_aws_managed_kms_key" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#536-539">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_with_aws_managed_kms_key" class="fn">server_side_encryption_with_aws_managed_kms_key</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1. [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_with_aws_managed_kms_key" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#535-538">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_with_aws_managed_kms_key" class="fn">server_side_encryption_with_aws_managed_kms_key</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1. [...]
 <p>As known as: SSE-KMS</p>
 <p>NOTE: This function should not be used along with other <code>server_side_encryption_with_</code> functions.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_with_customer_managed_kms_key" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#546-553">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_with_customer_managed_kms_key" class="fn">server_side_encryption_with_customer_managed_kms_key</a>(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_with_customer_managed_kms_key" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#545-552">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_with_customer_managed_kms_key" class="fn">server_side_encryption_with_customer_managed_kms_key</a>(
     &amp;mut self,
     aws_kms_key_id: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>
 ) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a></h4></section></summary><div class="docblock"><p>Enable server side encryption with customer managed kms key</p>
 <p>As known as: SSE-KMS</p>
 <p>NOTE: This function should not be used along with other <code>server_side_encryption_with_</code> functions.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_with_s3_key" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#560-563">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_with_s3_key" class="fn">server_side_encryption_with_s3_key</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_with_s3_key" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#559-562">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_with_s3_key" class="fn">server_side_encryption_with_s3_key</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp [...]
 <p>As known as: SSE-S3</p>
 <p>NOTE: This function should not be used along with other <code>server_side_encryption_with_</code> functions.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_with_customer_key" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#570-580">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_with_customer_key" class="fn">server_side_encryption_with_customer_key</a>(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_with_customer_key" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#569-579">source</a><h4 class="code-header">pub fn <a href="#method.server_side_encryption_with_customer_key" class="fn">server_side_encryption_with_customer_key</a>(
     &amp;mut self,
     algorithm: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
     key: &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.u8.html">u8</a>]
 ) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a></h4></section></summary><div class="docblock"><p>Enable server side encryption with customer key.</p>
 <p>As known as: SSE-C</p>
 <p>NOTE: This function should not be used along with other <code>server_side_encryption_with_</code> functions.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.security_token" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#587-592">source</a><h4 class="code-header">pub fn <a href="#method.security_token" class="fn">security_token</a>(&amp;mut self, token: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang. [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.security_token" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#586-591">source</a><h4 class="code-header">pub fn <a href="#method.security_token" class="fn">security_token</a>(&amp;mut self, token: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang. [...]
 <h5 id="warning"><a href="#warning">Warning</a></h5>
 <p>security token’s lifetime is short and requires users to refresh in time.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.disable_config_load" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#601-604">source</a><h4 class="code-header">pub fn <a href="#method.disable_config_load" class="fn">disable_config_load</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a></h4></section></summary><div cl [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.disable_config_load" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#600-603">source</a><h4 class="code-header">pub fn <a href="#method.disable_config_load" class="fn">disable_config_load</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a></h4></section></summary><div cl [...]
 environment.</p>
 <p>For examples:</p>
 <ul>
 <li>envs like <code>AWS_ACCESS_KEY_ID</code></li>
 <li>files like <code>~/.aws/config</code></li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.disable_ec2_metadata" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#610-613">source</a><h4 class="code-header">pub fn <a href="#method.disable_ec2_metadata" class="fn">disable_ec2_metadata</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a></h4></section></summary><div [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.disable_ec2_metadata" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#609-612">source</a><h4 class="code-header">pub fn <a href="#method.disable_ec2_metadata" class="fn">disable_ec2_metadata</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a></h4></section></summary><div [...]
 <p>This option is used to disable the default behavior of opendal
 to load credential from ec2 metadata, a.k.a, IMDSv2</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.enable_virtual_host_style" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#620-623">source</a><h4 class="code-header">pub fn <a href="#method.enable_virtual_host_style" class="fn">enable_virtual_host_style</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a></h4></section [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.enable_virtual_host_style" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#619-622">source</a><h4 class="code-header">pub fn <a href="#method.enable_virtual_host_style" class="fn">enable_virtual_host_style</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a></h4></section [...]
 in virtual host style instead of path style.</p>
 <ul>
 <li>By default, opendal will send API to <code>https://s3.us-east-1.wasabisys.com/bucket_name</code></li>
 <li>Enabled, opendal will send API to <code>https://bucket_name.s3.us-east-1.wasabisys.com</code></li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.customed_credential_load" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#626-629">source</a><h4 class="code-header">pub fn <a href="#method.customed_credential_load" class="fn">customed_credential_load</a>(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.customed_credential_load" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#625-628">source</a><h4 class="code-header">pub fn <a href="#method.customed_credential_load" class="fn">customed_credential_load</a>(
     &amp;mut self,
     cred: <a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn AwsCredentialLoad&gt;
 ) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a></h4></section></summary><div class="docblock"><p>Adding a customed credential load for service.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.http_client" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#637-640">source</a><h4 class="code-header">pub fn <a href="#method.http_client" class="fn">http_client</a>(&amp;mut self, client: <a class="struct" href="../raw/struct.HttpClient.html" title="struct opendal::raw::HttpClient">HttpClient</a>) -&gt; <a class="primitive" href="https://doc.rust- [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.http_client" class="method"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#636-639">source</a><h4 class="code-header">pub fn <a href="#method.http_client" class="fn">http_client</a>(&amp;mut self, client: <a class="struct" href="../raw/struct.HttpClient.html" title="struct opendal::raw::HttpClient">HttpClient</a>) -&gt; <a class="primitive" href="https://doc.rust- [...]
 <h5 id="notes"><a href="#notes">Notes</a></h5>
 <p>This API is part of OpenDAL’s Raw API. <code>HttpClient</code> could be changed
 during minor updates.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-WasabiBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#701-885">source</a><a href="#impl-Builder-for-WasabiBuilder" class="anchor">§ [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-WasabiBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/wasabi/backend.rs.html#700-884">source</a><a href="#impl-Builder-for-WasabiBuilder" class="anchor">§ [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/services/struct.Webdav.html b/docs/rust/opendal/services/struct.Webdav.html
index 021b9ae2..0619930b 100644
--- a/docs/rust/opendal/services/struct.Webdav.html
+++ b/docs/rust/opendal/services/struct.Webdav.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="WebDAV backend support."><title>Webdav in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.f [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="WebDAV backend support."><title>Webdav in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.f [...]
 <h2 id="capabilities"><a href="#capabilities">Capabilities</a></h2>
 <p>This service can be used to:</p>
 <ul>
@@ -52,20 +52,20 @@ Users can use <code>webdav</code> to connect those services.</p>
     <span class="kw">let </span>op: Operator = Operator::new(builder)<span class="question-mark">?</span>.finish();
     <span class="prelude-val">Ok</span>(())
 }</code></pre></div>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-WebdavBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/webdav/backend.rs.html#112-177">source</a><a href="#impl-WebdavBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Webdav [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-WebdavBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/webdav/backend.rs.html#111-176">source</a><a href="#impl-WebdavBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Webdav [...]
 <p>For example: <code>https://example.com</code></p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.username" class="method"><a class="srclink rightside" href="../../src/opendal/services/webdav/backend.rs.html#129-134">source</a><h4 class="code-header">pub fn <a href="#method.username" class="fn">username</a>(&amp;mut self, username: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/ [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.username" class="method"><a class="srclink rightside" href="../../src/opendal/services/webdav/backend.rs.html#128-133">source</a><h4 class="code-header">pub fn <a href="#method.username" class="fn">username</a>(&amp;mut self, username: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/ [...]
 <p>default: no password</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.password" class="method"><a class="srclink rightside" href="../../src/opendal/services/webdav/backend.rs.html#139-144">source</a><h4 class="code-header">pub fn <a href="#method.password" class="fn">password</a>(&amp;mut self, password: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/ [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.password" class="method"><a class="srclink rightside" href="../../src/opendal/services/webdav/backend.rs.html#138-143">source</a><h4 class="code-header">pub fn <a href="#method.password" class="fn">password</a>(&amp;mut self, password: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/ [...]
 <p>default: no password</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.token" class="method"><a class="srclink rightside" href="../../src/opendal/services/webdav/backend.rs.html#149-154">source</a><h4 class="code-header">pub fn <a href="#method.token" class="fn">token</a>(&amp;mut self, token: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.re [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.token" class="method"><a class="srclink rightside" href="../../src/opendal/services/webdav/backend.rs.html#148-153">source</a><h4 class="code-header">pub fn <a href="#method.token" class="fn">token</a>(&amp;mut self, token: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.re [...]
 <p>default: no access token</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.root" class="method"><a class="srclink rightside" href="../../src/opendal/services/webdav/backend.rs.html#157-165">source</a><h4 class="code-header">pub fn <a href="#method.root" class="fn">root</a>(&amp;mut self, root: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.refere [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.http_client" class="method"><a class="srclink rightside" href="../../src/opendal/services/webdav/backend.rs.html#173-176">source</a><h4 class="code-header">pub fn <a href="#method.http_client" class="fn">http_client</a>(&amp;mut self, client: <a class="struct" href="../raw/struct.HttpClient.html" title="struct opendal::raw::HttpClient">HttpClient</a>) -&gt; <a class="primitive" href="https://doc.rust- [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.root" class="method"><a class="srclink rightside" href="../../src/opendal/services/webdav/backend.rs.html#156-164">source</a><h4 class="code-header">pub fn <a href="#method.root" class="fn">root</a>(&amp;mut self, root: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.refere [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.http_client" class="method"><a class="srclink rightside" href="../../src/opendal/services/webdav/backend.rs.html#172-175">source</a><h4 class="code-header">pub fn <a href="#method.http_client" class="fn">http_client</a>(&amp;mut self, client: <a class="struct" href="../raw/struct.HttpClient.html" title="struct opendal::raw::HttpClient">HttpClient</a>) -&gt; <a class="primitive" href="https://doc.rust- [...]
 <h5 id="notes-1"><a href="#notes-1">Notes</a></h5>
 <p>This API is part of OpenDAL’s Raw API. <code>HttpClient</code> could be changed
 during minor updates.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-WebdavBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/webdav/backend.rs.html#179-237">source</a><a href="#impl-Builder-for-WebdavBuilder" class="anchor">§ [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-WebdavBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/webdav/backend.rs.html#178-236">source</a><a href="#impl-Builder-for-WebdavBuilder" class="anchor">§ [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/services/struct.Webhdfs.html b/docs/rust/opendal/services/struct.Webhdfs.html
index cdabc6fb..6c228489 100644
--- a/docs/rust/opendal/services/struct.Webhdfs.html
+++ b/docs/rust/opendal/services/struct.Webhdfs.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="WebHDFS’s REST API support."><title>Webhdfs in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../sta [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="WebHDFS’s REST API support."><title>Webhdfs in opendal::services - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../sta [...]
 <p>There two implementations of WebHDFS REST API:</p>
 <ul>
 <li>Native via HDFS Namenode and Datanode, data are transferred between nodes directly.</li>
@@ -67,11 +67,11 @@ blocking</li>
 
     <span class="prelude-val">Ok</span>(())
 }</code></pre></div>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-WebhdfsBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/webhdfs/backend.rs.html#127-173">source</a><a href="#impl-WebhdfsBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Web [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-WebhdfsBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/webhdfs/backend.rs.html#126-172">source</a><a href="#impl-WebhdfsBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Web [...]
 <p>All operations will happen under this root</p>
 <h5 id="note"><a href="#note">Note</a></h5>
 <p>The root will be automatically created if not exists.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.endpoint" class="method"><a class="srclink rightside" href="../../src/opendal/services/webhdfs/backend.rs.html#153-159">source</a><h4 class="code-header">pub fn <a href="#method.endpoint" class="fn">endpoint</a>(&amp;mut self, endpoint: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.endpoint" class="method"><a class="srclink rightside" href="../../src/opendal/services/webhdfs/backend.rs.html#152-158">source</a><h4 class="code-header">pub fn <a href="#method.endpoint" class="fn">endpoint</a>(&amp;mut self, endpoint: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std [...]
 default to <code>http://127.0.0.1:9870</code></p>
 <p>Endpoints should be full uri, e.g.</p>
 <ul>
@@ -80,17 +80,17 @@ default to <code>http://127.0.0.1:9870</code></p>
 </ul>
 <p>If user inputs endpoint without scheme, we will
 prepend <code>http://</code> to it.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.delegation" class="method"><a class="srclink rightside" href="../../src/opendal/services/webhdfs/backend.rs.html#167-172">source</a><h4 class="code-header">pub fn <a href="#method.delegation" class="fn">delegation</a>(&amp;mut self, delegation: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1. [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.delegation" class="method"><a class="srclink rightside" href="../../src/opendal/services/webhdfs/backend.rs.html#166-171">source</a><h4 class="code-header">pub fn <a href="#method.delegation" class="fn">delegation</a>(&amp;mut self, delegation: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1. [...]
 used for authentication</p>
 <h5 id="note-1"><a href="#note-1">Note</a></h5>
 <p>The builder prefers using delegation token over username.
 If both are set, delegation token will be used.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-WebhdfsBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/webhdfs/backend.rs.html#175-232">source</a><a href="#impl-Builder-for-WebhdfsBuilder" class="anchor [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-WebhdfsBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/webhdfs/backend.rs.html#174-231">source</a><a href="#impl-Builder-for-WebhdfsBuilder" class="anchor [...]
 <h5 id="note-2"><a href="#note-2">Note</a></h5>
 <p>when building backend, the built backend will check if the root directory
 exits.
 if the directory does not exits, the directory will be automatically created</p>
-</div></details><details class="toggle" open><summary><section id="associatedconstant.SCHEME" class="associatedconstant trait-impl"><a class="srclink rightside" href="../../src/opendal/services/webhdfs/backend.rs.html#176">source</a><a href="#associatedconstant.SCHEME" class="anchor">§</a><h4 class="code-header">const <a href="../trait.Builder.html#associatedconstant.SCHEME" class="constant">SCHEME</a>: <a class="enum" href="../enum.Scheme.html" title="enum opendal::Scheme">Scheme</a> =  [...]
+</div></details><details class="toggle" open><summary><section id="associatedconstant.SCHEME" class="associatedconstant trait-impl"><a class="srclink rightside" href="../../src/opendal/services/webhdfs/backend.rs.html#175">source</a><a href="#associatedconstant.SCHEME" class="anchor">§</a><h4 class="code-header">const <a href="../trait.Builder.html#associatedconstant.SCHEME" class="constant">SCHEME</a>: <a class="enum" href="../enum.Scheme.html" title="enum opendal::Scheme">Scheme</a> =  [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/sidebar-items.js b/docs/rust/opendal/sidebar-items.js
index 13f6d6ca..2c6a2d66 100644
--- a/docs/rust/opendal/sidebar-items.js
+++ b/docs/rust/opendal/sidebar-items.js
@@ -1 +1 @@
-window.SIDEBAR_ITEMS = {"enum":["EntryMode","ErrorKind","Metakey","Scheme"],"mod":["docs","layers","operator_functions","operator_futures","ops","raw","services"],"struct":["Appender","BlockingLister","BlockingOperator","BlockingReader","BlockingWriter","Capability","Entry","Error","Lister","Metadata","Operator","OperatorBuilder","OperatorInfo","Reader","Writer"],"trait":["Builder"],"type":["Result"]};
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"enum":["EntryMode","ErrorKind","Metakey","Scheme"],"mod":["docs","layers","operator_functions","operator_futures","raw","services"],"struct":["Appender","BlockingLister","BlockingOperator","BlockingReader","BlockingWriter","Capability","Entry","Error","Lister","Metadata","Operator","OperatorBuilder","OperatorInfo","Reader","Writer"],"trait":["Builder"],"type":["Result"]};
\ No newline at end of file
diff --git a/docs/rust/opendal/struct.Appender.html b/docs/rust/opendal/struct.Appender.html
index 0e5c73ec..de2d52b6 100644
--- a/docs/rust/opendal/struct.Appender.html
+++ b/docs/rust/opendal/struct.Appender.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Appender is designed to append data into given path in an asynchronous manner."><title>Appender in opendal - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type=" [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Appender is designed to append data into given path in an asynchronous manner."><title>Appender in opendal - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type=" [...]
 manner.</p>
 <h3 id="notes"><a href="#notes">Notes</a></h3>
 <p>Please make sure either `close`` has been called before
@@ -8,33 +8,33 @@ dropping the appender otherwise the data could be lost.</p>
 possible to overwrite existing data.</p>
 <p>Appender did not know the size of the data to be written, so it will
 always be <code>unsized</code>.</p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Appender" class="impl"><a class="srclink rightside" href="../src/opendal/types/appender.rs.html#59-103">source</a><a href="#impl-Appender" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Appender.html" title="struct  [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.close" class="method"><a class="srclink rightside" href="../src/opendal/types/appender.rs.html#93-102">source</a><h4 class="code-header">pub async fn <a href="#method.close" class="fn">close</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.unit.html">()</a>&gt;</h4></sec [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Appender" class="impl"><a class="srclink rightside" href="../src/opendal/types/appender.rs.html#58-102">source</a><a href="#impl-Appender" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Appender.html" title="struct  [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.close" class="method"><a class="srclink rightside" href="../src/opendal/types/appender.rs.html#92-101">source</a><h4 class="code-header">pub async fn <a href="#method.close" class="fn">close</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.unit.html">()</a>&gt;</h4></sec [...]
 <h6 id="notes-2"><a href="#notes-2">Notes</a></h6>
 <p>Close should only be called when the appender is not closed,
 otherwise an unexpected error could be returned.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-AsyncWrite-for-Appender" class="impl"><a class="srclink rightside" href="../src/opendal/types/appender.rs.html#122-187">source</a><a href="#impl-AsyncWrite-for-Appender" class="anchor">§</a><h3 class="c [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-AsyncWrite-for-Appender" class="impl"><a class="srclink rightside" href="../src/opendal/types/appender.rs.html#121-186">source</a><a href="#impl-AsyncWrite-for-Appender" class="anchor">§</a><h3 class="c [...]
     self: <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a>&gt;,
     cx: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;,
     buf: &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.u8.html">u8</a>]
-) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="https://doc.rust-lang.org/1.69.0/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.usize.html">usize</a>&gt;&gt;</h4></section></summary><div class='docblock'>Attempt to write bytes from <code>buf</code> into the object. <a [...]
-their destination. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.poll_close" class="method trait-impl"><a class="srclink rightside" href="../src/opendal/types/appender.rs.html#161-186">source</a><a href="#method.poll_close" class="anchor">§</a><h4 class="code-header">fn <a class="fn">poll_close</a>(self: <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a c [...]
+) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="https://doc.rust-lang.org/1.69.0/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.usize.html">usize</a>&gt;&gt;</h4></section></summary><div class='docblock'>Attempt to write bytes from <code>buf</code> into the object. <a [...]
+their destination. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.poll_close" class="method trait-impl"><a class="srclink rightside" href="../src/opendal/types/appender.rs.html#160-185">source</a><a href="#method.poll_close" class="anchor">§</a><h4 class="code-header">fn <a class="fn">poll_close</a>(self: <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a c [...]
     self: <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a>&gt;,
     cx: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;,
     bufs: &amp;[<a class="struct" href="https://doc.rust-lang.org/1.69.0/std/io/struct.IoSlice.html" title="struct std::io::IoSlice">IoSlice</a>&lt;'_&gt;]
 ) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="enum" href="https://doc.rust-lang.org/1.69.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.usize.html">usize</a>, <a class="struct" href="https://doc.rust-lang.org/1.69.0/std/io/error/struct.Error.html" title="struct std::io::error::E [...]
-IO operations. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-AsyncWrite-for-Appender-1" class="impl"><a class="srclink rightside" href="../src/opendal/types/appender.rs.html#189-253">source</a><a href="#impl-AsyncWrite-for-Appender-1" class="anchor">§</a><h3 class="code-header">impl AsyncWrite for <a class="struct" href="struct.Appender.html" title="struct opendal::Appender">Appender</a></h3></section></summary [...]
+IO operations. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-AsyncWrite-for-Appender-1" class="impl"><a class="srclink rightside" href="../src/opendal/types/appender.rs.html#188-252">source</a><a href="#impl-AsyncWrite-for-Appender-1" class="anchor">§</a><h3 class="code-header">impl AsyncWrite for <a class="struct" href="struct.Appender.html" title="struct opendal::Appender">Appender</a></h3></section></summary [...]
     self: <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a>&gt;,
     cx: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;,
     buf: &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.u8.html">u8</a>]
-) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="https://doc.rust-lang.org/1.69.0/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.usize.html">usize</a>&gt;&gt;</h4></section></summary><div class='docblock'>Attempt to write bytes from <code>buf</code> into the object. <a [...]
-their destination. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.poll_shutdown" class="method trait-impl"><a class="srclink rightside" href="../src/opendal/types/appender.rs.html#227-252">source</a><a href="#method.poll_shutdown" class="anchor">§</a><h4 class="code-header">fn <a class="fn">poll_shutdown</a>(self: <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a [...]
+) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="https://doc.rust-lang.org/1.69.0/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.usize.html">usize</a>&gt;&gt;</h4></section></summary><div class='docblock'>Attempt to write bytes from <code>buf</code> into the object. <a [...]
+their destination. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.poll_shutdown" class="method trait-impl"><a class="srclink rightside" href="../src/opendal/types/appender.rs.html#226-251">source</a><a href="#method.poll_shutdown" class="anchor">§</a><h4 class="code-header">fn <a class="fn">poll_shutdown</a>(self: <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a [...]
 the I/O connection has completely shut down. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.poll_write_vectored-1" class="method trait-impl"><a href="#method.poll_write_vectored-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">poll_write_vectored</a>(
     self: <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a>&gt;,
     cx: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;,
     bufs: &amp;[<a class="struct" href="https://doc.rust-lang.org/1.69.0/std/io/struct.IoSlice.html" title="struct std::io::IoSlice">IoSlice</a>&lt;'_&gt;]
 ) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="enum" href="https://doc.rust-lang.org/1.69.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.usize.html">usize</a>, <a class="struct" href="https://doc.rust-lang.org/1.69.0/std/io/error/struct.Error.html" title="struct std::io::error::E [...]
-implementation. <a>Read more</a></div></details></div></details><section id="impl-Sync-for-Appender" class="impl"><a class="srclink rightside" href="../src/opendal/types/appender.rs.html#57">source</a><a href="#impl-Sync-for-Appender" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Appender.html" title="struct opendal::Appender [...]
+implementation. <a>Read more</a></div></details></div></details><section id="impl-Sync-for-Appender" class="impl"><a class="srclink rightside" href="../src/opendal/types/appender.rs.html#56">source</a><a href="#impl-Sync-for-Appender" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Appender.html" title="struct opendal::Appender [...]
 <p>Appender will only be accessed by <code>&amp;mut Self</code></p>
 </div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Appender" class="impl"><a href="#impl-RefUnwindSafe-for-Appender" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwi [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
diff --git a/docs/rust/opendal/struct.BlockingOperator.html b/docs/rust/opendal/struct.BlockingOperator.html
index 76ec4fc6..70db1880 100644
--- a/docs/rust/opendal/struct.BlockingOperator.html
+++ b/docs/rust/opendal/struct.BlockingOperator.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="BlockingOperator is the entry for all public blocking APIs."><title>BlockingOperator in opendal - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="BlockingOperator is the entry for all public blocking APIs."><title>BlockingOperator in opendal - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" [...]
 <p>Read <a href="docs/concepts/index.html" title="mod opendal::docs::concepts"><code>concepts</code></a> for know more about <a href="struct.Operator.html" title="struct opendal::Operator"><code>Operator</code></a>.</p>
 <h2 id="examples"><a href="#examples">Examples</a></h2>
 <p>Read more backend init examples in <a href="services/index.html" title="mod opendal::services"><code>services</code></a></p>
@@ -20,15 +20,15 @@
 
     <span class="prelude-val">Ok</span>(())
 }</code></pre></div>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-BlockingOperator" class="impl"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#65-115">source</a><a href="#impl-BlockingOperator" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="st [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.with_limit" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#91-95">source</a><h4 class="code-header">pub fn <a href="#method.with_limit" class="fn">with_limit</a>(&amp;self, limit: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.usize.html">usize</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Specify  [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-BlockingOperator" class="impl"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#63-113">source</a><a href="#impl-BlockingOperator" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="st [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.with_limit" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#89-93">source</a><h4 class="code-header">pub fn <a href="#method.with_limit" class="fn">with_limit</a>(&amp;self, limit: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.usize.html">usize</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Specify  [...]
 <p>Default: 1000</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.info" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#112-114">source</a><h4 class="code-header">pub fn <a href="#method.info" class="fn">info</a>(&amp;self) -&gt; <a class="struct" href="struct.OperatorInfo.html" title="struct opendal::OperatorInfo">OperatorInfo</a></h4></section></summary><div class="docblock"><p>Get information of underlying [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.info" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#110-112">source</a><h4 class="code-header">pub fn <a href="#method.info" class="fn">info</a>(&amp;self) -&gt; <a class="struct" href="struct.OperatorInfo.html" title="struct opendal::OperatorInfo">OperatorInfo</a></h4></section></summary><div class="docblock"><p>Get information of underlying [...]
 <h5 id="examples-1"><a href="#examples-1">Examples</a></h5>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>opendal::BlockingOperator;
 
 <span class="kw">let </span>info = op.info();</code></pre></div>
-</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-BlockingOperator-1" class="impl"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#118-788">source</a><a href="#impl-BlockingOperator-1" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.BlockingOperator.html" title="struct opendal::BlockingOperator">BlockingOperator</a></h3></section></summary><div class="docbl [...]
+</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-BlockingOperator-1" class="impl"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#116-789">source</a><a href="#impl-BlockingOperator-1" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.BlockingOperator.html" title="struct opendal::BlockingOperator">BlockingOperator</a></h3></section></summary><div class="docbl [...]
 <h5 id="notes"><a href="#notes">Notes</a></h5>
 <p>Use <code>stat</code> if you:</p>
 <ul>
@@ -45,7 +45,7 @@ you want has already been cached.</p>
         <span class="macro">println!</span>(<span class="string">&quot;file not exist&quot;</span>)
     }
 }</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.metadata" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#238-249">source</a><h4 class="code-header">pub fn <a href="#method.metadata" class="fn">metadata</a>(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.metadata" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#236-247">source</a><h4 class="code-header">pub fn <a href="#method.metadata" class="fn">metadata</a>(
     &amp;self,
     entry: &amp;<a class="struct" href="struct.Entry.html" title="struct opendal::Entry">Entry</a>,
     flags: impl <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;FlagSet&lt;<a class="enum" href="enum.Metakey.html" title="enum opendal::Metakey">Metakey</a>&gt;&gt;
@@ -95,7 +95,7 @@ cache. In this way, we can make sure that no API call will send.</p>
 </span><span class="kw">let _ </span>= meta.content_length();
 <span class="comment">// etag MUST be correct.
 </span><span class="kw">let _ </span>= meta.etag();</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.is_exist" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#264-273">source</a><h4 class="code-header">pub fn <a href="#method.is_exist" class="fn">is_exist</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal::Resul [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.is_exist" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#262-271">source</a><h4 class="code-header">pub fn <a href="#method.is_exist" class="fn">is_exist</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal::Resul [...]
 <h5 id="example"><a href="#example">Example</a></h5>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>anyhow::Result;
 <span class="kw">use </span>opendal::BlockingOperator;
@@ -104,7 +104,7 @@ cache. In this way, we can make sure that no API call will send.</p>
 
     <span class="prelude-val">Ok</span>(())
 }</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.create_dir" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#299-316">source</a><h4 class="code-header">pub fn <a href="#method.create_dir" class="fn">create_dir</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal: [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.create_dir" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#297-314">source</a><h4 class="code-header">pub fn <a href="#method.create_dir" class="fn">create_dir</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal: [...]
 <h5 id="notes-2"><a href="#notes-2">Notes</a></h5>
 <p>To indicate that a path is a directory, it is compulsory to include
 a trailing / in the path. Failure to do so may result in
@@ -116,12 +116,12 @@ a trailing / in the path. Failure to do so may result in
 </ul>
 <h5 id="examples-4"><a href="#examples-4">Examples</a></h5>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code>op.create_dir(<span class="string">&quot;path/to/dir/&quot;</span>)<span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.read" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#334-336">source</a><h4 class="code-header">pub fn <a href="#method.read" class="fn">read</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Result</a [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.read" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#332-334">source</a><h4 class="code-header">pub fn <a href="#method.read" class="fn">read</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Result</a [...]
 <p>This function will allocate a new bytes internally. For more precise memory control or
 reading data lazily, please use <a href="struct.BlockingOperator.html#method.reader" title="method opendal::BlockingOperator::reader"><code>BlockingOperator::reader</code></a></p>
 <h5 id="examples-5"><a href="#examples-5">Examples</a></h5>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>bs = op.read(<span class="string">&quot;path/to/file&quot;</span>)<span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.range_read" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#355-383">source</a><h4 class="code-header">pub fn <a href="#method.range_read" class="fn">range_read</a>(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.range_read" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#353-381">source</a><h4 class="code-header">pub fn <a href="#method.range_read" class="fn">range_read</a>(
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
     range: impl <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/ops/range/trait.RangeBounds.html" title="trait core::ops::range::RangeBounds">RangeBounds</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.u64.html">u64</a>&gt;
@@ -130,17 +130,17 @@ reading data lazily, please use <a href="struct.BlockingOperator.html#method.rea
 reading data lazily, please use <a href="struct.BlockingOperator.html#method.range_reader" title="method opendal::BlockingOperator::range_reader"><code>BlockingOperator::range_reader</code></a></p>
 <h5 id="examples-6"><a href="#examples-6">Examples</a></h5>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>bs = op.range_read(<span class="string">&quot;path/to/file&quot;</span>, <span class="number">1024</span>..<span class="number">2048</span>)<span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.reader" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#398-400">source</a><h4 class="code-header">pub fn <a href="#method.reader" class="fn">reader</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Res [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.reader" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#396-398">source</a><h4 class="code-header">pub fn <a href="#method.reader" class="fn">reader</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Res [...]
 <h5 id="examples-7"><a href="#examples-7">Examples</a></h5>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>r = op.reader(<span class="string">&quot;path/to/file&quot;</span>)<span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.range_reader" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#415-430">source</a><h4 class="code-header">pub fn <a href="#method.range_reader" class="fn">range_reader</a>(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.range_reader" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#413-428">source</a><h4 class="code-header">pub fn <a href="#method.range_reader" class="fn">range_reader</a>(
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
     range: impl <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/ops/range/trait.RangeBounds.html" title="trait core::ops::range::RangeBounds">RangeBounds</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.u64.html">u64</a>&gt;
 ) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="struct" href="struct.BlockingReader.html" title="struct opendal::BlockingReader">BlockingReader</a>&gt;</h4></section></summary><div class="docblock"><p>Create a new reader which can read the specified range.</p>
 <h5 id="examples-8"><a href="#examples-8">Examples</a></h5>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>r = op.range_reader(<span class="string">&quot;path/to/file&quot;</span>, <span class="number">1024</span>..<span class="number">2048</span>)<span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.write" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#452-454">source</a><h4 class="code-header">pub fn <a href="#method.write" class="fn">write</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, bs: impl <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/convert/tra [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.write" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#450-452">source</a><h4 class="code-header">pub fn <a href="#method.write" class="fn">write</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, bs: impl <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/convert/tra [...]
 <h5 id="notes-3"><a href="#notes-3">Notes</a></h5>
 <ul>
 <li>Write will make sure all bytes has been written, or an error will be returned.</li>
@@ -149,7 +149,7 @@ reading data lazily, please use <a href="struct.BlockingOperator.html#method.ran
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bytes::Bytes;
 
 op.write(<span class="string">&quot;path/to/file&quot;</span>, <span class="macro">vec!</span>[<span class="number">0</span>; <span class="number">4096</span>])<span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.copy" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#476-512">source</a><h4 class="code-header">pub fn <a href="#method.copy" class="fn">copy</a>(&amp;self, from: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, to: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.s [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.copy" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#474-510">source</a><h4 class="code-header">pub fn <a href="#method.copy" class="fn">copy</a>(&amp;self, from: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, to: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.s [...]
 <h5 id="notes-4"><a href="#notes-4">Notes</a></h5>
 <ul>
 <li><code>from</code> and <code>to</code> must be a file.</li>
@@ -160,7 +160,7 @@ op.write(<span class="string">&quot;path/to/file&quot;</span>, <span class="macr
 <h5 id="examples-10"><a href="#examples-10">Examples</a></h5>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code>
 op.copy(<span class="string">&quot;path/to/file&quot;</span>, <span class="string">&quot;path/to/file2&quot;</span>)<span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.rename" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#533-569">source</a><h4 class="code-header">pub fn <a href="#method.rename" class="fn">rename</a>(&amp;self, from: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, to: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primi [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.rename" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#531-567">source</a><h4 class="code-header">pub fn <a href="#method.rename" class="fn">rename</a>(&amp;self, from: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, to: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primi [...]
 <h5 id="notes-5"><a href="#notes-5">Notes</a></h5>
 <ul>
 <li><code>from</code> and <code>to</code> must be a file.</li>
@@ -170,7 +170,7 @@ op.copy(<span class="string">&quot;path/to/file&quot;</span>, <span class="strin
 <h5 id="examples-11"><a href="#examples-11">Examples</a></h5>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code>
 op.rename(<span class="string">&quot;path/to/file&quot;</span>, <span class="string">&quot;path/to/file2&quot;</span>)<span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.write_with" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#590-616">source</a><h4 class="code-header">pub fn <a href="#method.write_with" class="fn">write_with</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, bs: impl <a class="trait" href="https://doc.rust-lang.org/1.69.0/c [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.write_with" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#591-617">source</a><h4 class="code-header">pub fn <a href="#method.write_with" class="fn">write_with</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, bs: impl <a class="trait" href="https://doc.rust-lang.org/1.69.0/c [...]
 <h5 id="notes-6"><a href="#notes-6">Notes</a></h5>
 <ul>
 <li>Write will make sure all bytes has been written, or an error will be returned.</li>
@@ -179,8 +179,11 @@ op.rename(<span class="string">&quot;path/to/file&quot;</span>, <span class="str
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bytes::Bytes;
 
 <span class="kw">let </span>bs = <span class="string">b&quot;hello, world!&quot;</span>.to_vec();
-<span class="kw">let _ </span>= op.write_with(<span class="string">&quot;hello.txt&quot;</span>, bs).content_type(<span class="string">&quot;text/plain&quot;</span>).call()<span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.writer" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#641-655">source</a><h4 class="code-header">pub fn <a href="#method.writer" class="fn">writer</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Res [...]
+<span class="kw">let _ </span>= op
+    .write_with(<span class="string">&quot;hello.txt&quot;</span>, bs)
+    .content_type(<span class="string">&quot;text/plain&quot;</span>)
+    .call()<span class="question-mark">?</span>;</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.writer" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#642-656">source</a><h4 class="code-header">pub fn <a href="#method.writer" class="fn">writer</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Res [...]
 <h5 id="notes-7"><a href="#notes-7">Notes</a></h5>
 <ul>
 <li>Write will make sure all bytes has been written, or an error will be returned.</li>
@@ -192,14 +195,14 @@ op.rename(<span class="string">&quot;path/to/file&quot;</span>, <span class="str
 w.write(<span class="macro">vec!</span>[<span class="number">0</span>; <span class="number">4096</span>])<span class="question-mark">?</span>;
 w.write(<span class="macro">vec!</span>[<span class="number">1</span>; <span class="number">4096</span>])<span class="question-mark">?</span>;
 w.close()<span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.delete" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#674-680">source</a><h4 class="code-header">pub fn <a href="#method.delete" class="fn">delete</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Res [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.delete" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#675-681">source</a><h4 class="code-header">pub fn <a href="#method.delete" class="fn">delete</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Res [...]
 <h5 id="notes-8"><a href="#notes-8">Notes</a></h5>
 <ul>
 <li>Delete not existing error won’t return errors.</li>
 </ul>
 <h5 id="examples-14"><a href="#examples-14">Examples</a></h5>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code>op.delete(<span class="string">&quot;path/to/file&quot;</span>)<span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.list" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#715-730">source</a><h4 class="code-header">pub fn <a href="#method.list" class="fn">list</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Result</a [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.list" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#716-731">source</a><h4 class="code-header">pub fn <a href="#method.list" class="fn">list</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Result</a [...]
 <p>This function will create a new handle to list entries.</p>
 <p>An error will be returned if path doesn’t end with <code>/</code>.</p>
 <h5 id="examples-15"><a href="#examples-15">Examples</a></h5>
@@ -219,7 +222,7 @@ w.close()<span class="question-mark">?</span>;</code></pre></div>
         EntryMode::Unknown =&gt; <span class="kw">continue</span>,
     }
 }</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.scan" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#770-787">source</a><h4 class="code-header">pub fn <a href="#method.scan" class="fn">scan</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Result</a [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.scan" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#771-788">source</a><h4 class="code-header">pub fn <a href="#method.scan" class="fn">scan</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Result</a [...]
 <p>Also, this function can be used to list a prefix.</p>
 <p>An error will be returned if given path doesn’t end with <code>/</code>.</p>
 <h5 id="notes-9"><a href="#notes-9">Notes</a></h5>
@@ -244,7 +247,7 @@ w.close()<span class="question-mark">?</span>;</code></pre></div>
         EntryMode::Unknown =&gt; <span class="kw">continue</span>,
     }
 }</code></pre></div>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-BlockingOperator" class="impl"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#58">source</a><a href="#impl-Clone-for-BlockingOperator" class="anchor [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-BlockingOperator" class="impl"><a class="srclink rightside" href="../src/opendal/types/operator/blocking_operator.rs.html#56">source</a><a href="#impl-Clone-for-BlockingOperator" class="anchor [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/struct.BlockingReader.html b/docs/rust/opendal/struct.BlockingReader.html
index f30ba0c6..47652550 100644
--- a/docs/rust/opendal/struct.BlockingReader.html
+++ b/docs/rust/opendal/struct.BlockingReader.html
@@ -1,6 +1,6 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="BlockingReader is designed to read data from given path in an blocking manner."><title>BlockingReader in opendal - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font"  [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="BlockingReader is designed to read data from given path in an blocking manner."><title>BlockingReader in opendal - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font"  [...]
 manner.</p>
-</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-BlockingRead-for-BlockingReader" class="impl"><a class="srclink rightside" href="../src/opendal/types/reader.rs.html#219-234">source</a><a href="#impl-BlockingRead-for-BlockingReader" class="anchor">§</a><h3 class="code-head [...]
+</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-BlockingRead-for-BlockingReader" class="impl"><a class="srclink rightside" href="../src/opendal/types/reader.rs.html#218-233">source</a><a href="#impl-BlockingRead-for-BlockingReader" class="anchor">§</a><h3 class="code-head [...]
     &amp;mut self
 ) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;[Self::<a class="associatedtype" href="https://doc.rust-lang.org/1.69.0/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.array.html">N</a>], <a class="struct" href="https://doc.rust-lang.org/ [...]
     Self: <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_next_chunk</code>)</span></div></span><div class='docblock'>Advances the iterator and returns an array containing the next <code>N</code> values. <a href="https://doc.rust-lang.org/1 [...]
@@ -182,14 +182,14 @@ greater than or equal to those of another. <a href="https://doc.rust-lang.org/1.
     Self: <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
     F: <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(Self::<a class="associatedtype" href="https://doc.rust-lang.org/1.69.0/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; K,
     K: <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>&lt;K&gt;,</span></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>is_sorted</code>)</span></div></span><div class='docblock'>Checks if the elements of this iterator are sorted using the given key extraction
-function. <a href="https://doc.rust-lang.org/1.69.0/core/iter/traits/iterator/trait.Iterator.html#method.is_sorted_by_key">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Read-for-BlockingReader" class="impl"><a class="srclink rightside" href="../src/opendal/types/reader.rs.html#236-241">source</a><a href="#impl-Read-for-BlockingReader" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https:// [...]
+function. <a href="https://doc.rust-lang.org/1.69.0/core/iter/traits/iterator/trait.Iterator.html#method.is_sorted_by_key">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Read-for-BlockingReader" class="impl"><a class="srclink rightside" href="../src/opendal/types/reader.rs.html#235-240">source</a><a href="#impl-Read-for-BlockingReader" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https:// [...]
 how many bytes were read. <a href="https://doc.rust-lang.org/1.69.0/std/io/trait.Read.html#tymethod.read">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.read_vectored" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.36.0">1.36.0</span> · <a class="srclink" href="https://doc.rust-lang.org/1.69.0/src/std/io/mod.rs.html#647">source</a></span><a href="#method.read_vectored" class="a [...]
 implementation. <a href="https://doc.rust-lang.org/1.69.0/std/io/trait.Read.html#method.is_read_vectored">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.read_to_end" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/1.69.0/src/std/io/mod.rs.html#711">source</a></span><a href="#method.read_to_end" class="anchor" [...]
     Self: <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Creates a “by reference” adaptor for this instance of <code>Read</code>. <a href="https://doc.rust-lang.org/1.69.0/std/io/trait.Read.html#method.by_ref">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.bytes" class="method trait-impl"><span class [...]
     Self: <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Transforms this <code>Read</code> instance to an <a href="https://doc.rust-lang.org/1.69.0/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator"><code>Iterator</code></a> over its bytes. <a href="https://doc.rust-lang.org/1.69.0/std/io/trait.Read.html# [...]
     R: <a class="trait" href="https://doc.rust-lang.org/1.69.0/std/io/trait.Read.html" title="trait std::io::Read">Read</a>,
     Self: <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Creates an adapter which will chain this stream with another. <a href="https://doc.rust-lang.org/1.69.0/std/io/trait.Read.html#method.chain">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.take" class="method trait-impl"><span class="rightside"> [...]
-    Self: <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Creates an adapter which will read at most <code>limit</code> bytes from it. <a href="https://doc.rust-lang.org/1.69.0/std/io/trait.Read.html#method.take">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Seek-for-BlockingReade [...]
+    Self: <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Creates an adapter which will read at most <code>limit</code> bytes from it. <a href="https://doc.rust-lang.org/1.69.0/std/io/trait.Read.html#method.take">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Seek-for-BlockingReade [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/struct.BlockingWriter.html b/docs/rust/opendal/struct.BlockingWriter.html
index 24fbb5e9..34e6bb33 100644
--- a/docs/rust/opendal/struct.BlockingWriter.html
+++ b/docs/rust/opendal/struct.BlockingWriter.html
@@ -1,8 +1,8 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="BlockingWriter is designed to write data into given path in an blocking manner."><title>BlockingWriter in opendal - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="BlockingWriter is designed to write data into given path in an blocking manner."><title>BlockingWriter in opendal - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" [...]
 manner.</p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-BlockingWriter" class="impl"><a class="srclink rightside" href="../src/opendal/types/writer.rs.html#284-307">source</a><a href="#impl-BlockingWriter" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.BlockingWriter.htm [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.close" class="method"><a class="srclink rightside" href="../src/opendal/types/writer.rs.html#304-306">source</a><h4 class="code-header">pub fn <a href="#method.close" class="fn">close</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.unit.html">()</a>&gt;</h4></section></ [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Write-for-BlockingWriter" class="impl"><a class="srclink rightside" href="../src/opendal/types/writer.rs.html#309-321">source</a><a href="#impl-Write-for-BlockingWriter" class="anchor">§</a><h3 class="c [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-BlockingWriter" class="impl"><a class="srclink rightside" href="../src/opendal/types/writer.rs.html#283-306">source</a><a href="#impl-BlockingWriter" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.BlockingWriter.htm [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.close" class="method"><a class="srclink rightside" href="../src/opendal/types/writer.rs.html#303-305">source</a><h4 class="code-header">pub fn <a href="#method.close" class="fn">close</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.unit.html">()</a>&gt;</h4></section></ [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Write-for-BlockingWriter" class="impl"><a class="srclink rightside" href="../src/opendal/types/writer.rs.html#308-320">source</a><a href="#impl-Write-for-BlockingWriter" class="anchor">§</a><h3 class="c [...]
 contents reach their destination. <a href="https://doc.rust-lang.org/1.69.0/std/io/trait.Write.html#tymethod.flush">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.write_vectored" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.36.0">1.36.0</span> · <a class="srclink" href="https://doc.rust-lang.org/1.69.0/src/std/io/mod.rs.html#1465">source</a></span><a href="#method.write_vecto [...]
 implementation. <a href="https://doc.rust-lang.org/1.69.0/std/io/trait.Write.html#method.is_write_vectored">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.write_all" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/1.69.0/src/std/io/mod.rs.html#1542">source</a></span><a href="#method.write_all" class="anchor"> [...]
 encountered. <a href="https://doc.rust-lang.org/1.69.0/std/io/trait.Write.html#method.write_fmt">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.by_ref" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/1.69.0/src/std/io/mod.rs.html#1719-1721">source</a></span><a href="#method.by_ref" class="anchor">§</a><h4 cla [...]
diff --git a/docs/rust/opendal/struct.Error.html b/docs/rust/opendal/struct.Error.html
index a35fae1c..81e7d7bb 100644
--- a/docs/rust/opendal/struct.Error.html
+++ b/docs/rust/opendal/struct.Error.html
@@ -17,7 +17,7 @@
 <p>By setting persistent, we indicate the retry should be stopped.</p>
 </div></details><details class="toggle method-toggle" open><summary><section id="method.kind" class="method"><a class="srclink rightside" href="../src/opendal/types/error.rs.html#330-332">source</a><h4 class="code-header">pub fn <a href="#method.kind" class="fn">kind</a>(&amp;self) -&gt; <a class="enum" href="enum.ErrorKind.html" title="enum opendal::ErrorKind">ErrorKind</a></h4></section></summary><div class="docblock"><p>Return error’s kind.</p>
 </div></details><details class="toggle method-toggle" open><summary><section id="method.is_temporary" class="method"><a class="srclink rightside" href="../src/opendal/types/error.rs.html#335-337">source</a><h4 class="code-header">pub fn <a href="#method.is_temporary" class="fn">is_temporary</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Check if this error is temporary.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Error" class="impl"><a class="srclink rightside" href="../src/opendal/types/error.rs.html#210-244">source</a><a href="#impl-Debug-for-Error" class="anchor">§</a><h3 class="code-header">impl <a [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Error" class="impl"><a class="srclink rightside" href="../src/opendal/types/error.rs.html#210-244">source</a><a href="#impl-Debug-for-Error" class="anchor">§</a><h3 class="code-header">impl <a [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></spa [...]
diff --git a/docs/rust/opendal/struct.Operator.html b/docs/rust/opendal/struct.Operator.html
index 3262c2b4..8c785732 100644
--- a/docs/rust/opendal/struct.Operator.html
+++ b/docs/rust/opendal/struct.Operator.html
@@ -1,5 +1,5 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Operator is the entry for all public async APIs. Developer should manipulate the data from storage service through Operator only by right."><title>Operator in opendal - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f9 [...]
-Developer should manipulate the data from storage service through Operator only by right.</p>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Operator is the entry for all public async APIs."><title>Operator in opendal - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href=" [...]
+<p>Developer should manipulate the data from storage service through Operator only by right.</p>
 <p>We will usually do some general checks and data transformations in this layer,
 like normalizing path from input, checking whether the path refers to one file or one directory, and so on.
 Read <a href="docs/concepts/index.html" title="mod opendal::docs::concepts"><code>concepts</code></a> for more about <a href="struct.Operator.html" title="struct opendal::Operator"><code>Operator</code></a>.</p>
@@ -33,7 +33,7 @@ Limit is usually the maximum size of data that operator will handle in one opera
 <span class="kw">let </span>info = op.info();</code></pre></div>
 </div></details><details class="toggle method-toggle" open><summary><section id="method.blocking" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#131-133">source</a><h4 class="code-header">pub fn <a href="#method.blocking" class="fn">blocking</a>(&amp;self) -&gt; <a class="struct" href="struct.BlockingOperator.html" title="struct opendal::BlockingOperator">BlockingOperator</a></h4></section></summary><div class="docblock"><p>Create a new b [...]
 <p>This operation is nearly no cost.</p>
-</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Operator-1" class="impl"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#137-1408">source</a><a href="#impl-Operator-1" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Operator.html" title="struct opendal::Operator">Operator</a></h3></section></summary><div class="docblock"><p>Operator async API.</p>
+</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Operator-1" class="impl"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#137-1411">source</a><a href="#impl-Operator-1" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Operator.html" title="struct opendal::Operator">Operator</a></h3></section></summary><div class="docblock"><p>Operator async API.</p>
 </div><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.check" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#153-160">source</a><h4 class="code-header">pub async fn <a href="#method.check" class="fn">check</a>(&amp;self) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.unit.html"> [...]
 <p>We will send a <code>list</code> request to path and return any errors we met.</p>
 
@@ -57,7 +57,7 @@ you want has already been cached.</p>
         <span class="macro">println!</span>(<span class="string">&quot;file not exist&quot;</span>)
     }
 }</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.stat_with" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#229-247">source</a><h4 class="code-header">pub fn <a href="#method.stat_with" class="fn">stat_with</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="struct" href="operator_futures/struct.FutureStat.html" title=" [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.stat_with" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#228-246">source</a><h4 class="code-header">pub fn <a href="#method.stat_with" class="fn">stat_with</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="struct" href="operator_futures/struct.FutureStat.html" title=" [...]
 <h5 id="notes-1"><a href="#notes-1">Notes</a></h5>
 <p>Use <code>stat</code> if you:</p>
 <ul>
@@ -74,7 +74,7 @@ you want has already been cached.</p>
         <span class="macro">println!</span>(<span class="string">&quot;file not exist&quot;</span>)
     }
 }</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.metadata" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#333-348">source</a><h4 class="code-header">pub async fn <a href="#method.metadata" class="fn">metadata</a>(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.metadata" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#332-347">source</a><h4 class="code-header">pub async fn <a href="#method.metadata" class="fn">metadata</a>(
     &amp;self,
     entry: &amp;<a class="struct" href="struct.Entry.html" title="struct opendal::Entry">Entry</a>,
     flags: impl <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;FlagSet&lt;<a class="enum" href="enum.Metakey.html" title="enum opendal::Metakey">Metakey</a>&gt;&gt;
@@ -125,7 +125,7 @@ cache. In this way, we can make sure that no API call will be sent.</p>
 </span><span class="kw">let _ </span>= meta.content_length();
 <span class="comment">// etag MUST be correct.
 </span><span class="kw">let _ </span>= meta.etag();</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.is_exist" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#366-375">source</a><h4 class="code-header">pub async fn <a href="#method.is_exist" class="fn">is_exist</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result"> [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.is_exist" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#365-374">source</a><h4 class="code-header">pub async fn <a href="#method.is_exist" class="fn">is_exist</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result"> [...]
 <h5 id="example"><a href="#example">Example</a></h5>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>anyhow::Result;
 <span class="kw">use </span>futures::io;
@@ -137,7 +137,7 @@ cache. In this way, we can make sure that no API call will be sent.</p>
 
     <span class="prelude-val">Ok</span>(())
 }</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.create_dir" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#402-418">source</a><h4 class="code-header">pub async fn <a href="#method.create_dir" class="fn">create_dir</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal::Re [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.create_dir" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#401-417">source</a><h4 class="code-header">pub async fn <a href="#method.create_dir" class="fn">create_dir</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal::Re [...]
 <h5 id="notes-3"><a href="#notes-3">Notes</a></h5>
 <p>To indicate that a path is a directory, it is compulsory to include
 a trailing / in the path. Failure to do so may result in
@@ -149,17 +149,17 @@ a trailing / in the path. Failure to do so may result in
 </ul>
 <h5 id="examples-5"><a href="#examples-5">Examples</a></h5>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code>op.create_dir(<span class="string">&quot;path/to/dir/&quot;</span>).<span class="kw">await</span><span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.read" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#437-439">source</a><h4 class="code-header">pub async fn <a href="#method.read" class="fn">read</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Result</a>&l [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.read" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#436-438">source</a><h4 class="code-header">pub async fn <a href="#method.read" class="fn">read</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Result</a>&l [...]
 <p>This function will allocate a new bytes internally. For more precise memory control or
 reading data lazily, please use <a href="struct.Operator.html#method.reader" title="method opendal::Operator::reader"><code>Operator::reader</code></a></p>
 <h5 id="examples-6"><a href="#examples-6">Examples</a></h5>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>bs = op.read(<span class="string">&quot;path/to/file&quot;</span>).<span class="kw">await</span><span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.read_with" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#459-511">source</a><h4 class="code-header">pub fn <a href="#method.read_with" class="fn">read_with</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="struct" href="operator_futures/struct.FutureRead.html" title=" [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.read_with" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#457-509">source</a><h4 class="code-header">pub fn <a href="#method.read_with" class="fn">read_with</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="struct" href="operator_futures/struct.FutureRead.html" title=" [...]
 <p>This function will allocate a new bytes internally. For more precise memory control or
 reading data lazily, please use <a href="struct.Operator.html#method.reader" title="method opendal::Operator::reader"><code>Operator::reader</code></a></p>
 <h5 id="examples-7"><a href="#examples-7">Examples</a></h5>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>bs = op.read_with(<span class="string">&quot;path/to/file&quot;</span>).<span class="kw">await</span><span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.range_read" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#535-537">source</a><h4 class="code-header">pub async fn <a href="#method.range_read" class="fn">range_read</a>(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.range_read" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#532-534">source</a><h4 class="code-header">pub async fn <a href="#method.range_read" class="fn">range_read</a>(
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
     range: impl <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/ops/range/trait.RangeBounds.html" title="trait core::ops::range::RangeBounds">RangeBounds</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.u64.html">u64</a>&gt;
@@ -172,10 +172,10 @@ reading data lazily, please use <a href="struct.Operator.html#method.range_reade
 </ul>
 <h5 id="examples-8"><a href="#examples-8">Examples</a></h5>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>bs = op.range_read(<span class="string">&quot;path/to/file&quot;</span>, <span class="number">1024</span>..<span class="number">2048</span>).<span class="kw">await</span><span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.reader" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#554-556">source</a><h4 class="code-header">pub async fn <a href="#method.reader" class="fn">reader</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Result [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.reader" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#551-553">source</a><h4 class="code-header">pub async fn <a href="#method.reader" class="fn">reader</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Result [...]
 <h5 id="examples-9"><a href="#examples-9">Examples</a></h5>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>r = op.reader(<span class="string">&quot;path/to/file&quot;</span>).<span class="kw">await</span><span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.range_reader" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#576-578">source</a><h4 class="code-header">pub async fn <a href="#method.range_reader" class="fn">range_reader</a>(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.range_reader" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#573-575">source</a><h4 class="code-header">pub async fn <a href="#method.range_reader" class="fn">range_reader</a>(
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
     range: impl <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/ops/range/trait.RangeBounds.html" title="trait core::ops::range::RangeBounds">RangeBounds</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.u64.html">u64</a>&gt;
@@ -186,13 +186,10 @@ reading data lazily, please use <a href="struct.Operator.html#method.range_reade
 </ul>
 <h5 id="examples-10"><a href="#examples-10">Examples</a></h5>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>r = op.range_reader(<span class="string">&quot;path/to/file&quot;</span>, <span class="number">1024</span>..<span class="number">2048</span>).<span class="kw">await</span><span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.reader_with" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#599-625">source</a><h4 class="code-header">pub fn <a href="#method.reader_with" class="fn">reader_with</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="struct" href="operator_futures/struct.FutureReader.html" [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.reader_with" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#592-618">source</a><h4 class="code-header">pub fn <a href="#method.reader_with" class="fn">reader_with</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="struct" href="operator_futures/struct.FutureReader.html" [...]
 <h5 id="examples-11"><a href="#examples-11">Examples</a></h5>
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>r = op
-    .reader_with(<span class="string">&quot;path/to/file&quot;</span>)
-    .range((<span class="number">0</span>..<span class="number">10</span>))
-    .<span class="kw">await</span><span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.write" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#648-651">source</a><h4 class="code-header">pub async fn <a href="#method.write" class="fn">write</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, bs: impl <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/convert/trait. [...]
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>r = op.reader_with(<span class="string">&quot;path/to/file&quot;</span>).range((<span class="number">0</span>..<span class="number">10</span>)).<span class="kw">await</span><span class="question-mark">?</span>;</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.write" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#641-644">source</a><h4 class="code-header">pub async fn <a href="#method.write" class="fn">write</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, bs: impl <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/convert/trait. [...]
 <h5 id="notes-6"><a href="#notes-6">Notes</a></h5>
 <ul>
 <li>Write will make sure all bytes has been written, or an error will be returned.</li>
@@ -201,7 +198,7 @@ reading data lazily, please use <a href="struct.Operator.html#method.range_reade
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bytes::Bytes;
 
 op.write(<span class="string">&quot;path/to/file&quot;</span>, <span class="macro">vec!</span>[<span class="number">0</span>; <span class="number">4096</span>]).<span class="kw">await</span><span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.append" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#674-677">source</a><h4 class="code-header">pub async fn <a href="#method.append" class="fn">append</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, bs: impl <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/convert/tra [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.append" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#667-670">source</a><h4 class="code-header">pub async fn <a href="#method.append" class="fn">append</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, bs: impl <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/convert/tra [...]
 <h5 id="notes-7"><a href="#notes-7">Notes</a></h5>
 <ul>
 <li>Append will make sure all bytes has been written, or an error will be returned.</li>
@@ -212,7 +209,7 @@ op.write(<span class="string">&quot;path/to/file&quot;</span>, <span class="macr
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bytes::Bytes;
 
 op.append(<span class="string">&quot;path/to/file&quot;</span>, <span class="macro">vec!</span>[<span class="number">0</span>; <span class="number">4096</span>]).<span class="kw">await</span><span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.copy" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#700-736">source</a><h4 class="code-header">pub async fn <a href="#method.copy" class="fn">copy</a>(&amp;self, from: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, to: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str. [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.copy" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#693-729">source</a><h4 class="code-header">pub async fn <a href="#method.copy" class="fn">copy</a>(&amp;self, from: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, to: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str. [...]
 <h5 id="notes-8"><a href="#notes-8">Notes</a></h5>
 <ul>
 <li><code>from</code> and <code>to</code> must be a file.</li>
@@ -223,7 +220,7 @@ op.append(<span class="string">&quot;path/to/file&quot;</span>, <span class="mac
 <h5 id="examples-14"><a href="#examples-14">Examples</a></h5>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code>
 op.copy(<span class="string">&quot;path/to/file&quot;</span>, <span class="string">&quot;path/to/file2&quot;</span>).<span class="kw">await</span><span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.rename" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#758-794">source</a><h4 class="code-header">pub async fn <a href="#method.rename" class="fn">rename</a>(&amp;self, from: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, to: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitiv [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.rename" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#751-787">source</a><h4 class="code-header">pub async fn <a href="#method.rename" class="fn">rename</a>(&amp;self, from: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, to: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitiv [...]
 <h5 id="notes-9"><a href="#notes-9">Notes</a></h5>
 <ul>
 <li><code>from</code> and <code>to</code> must be a file.</li>
@@ -233,7 +230,7 @@ op.copy(<span class="string">&quot;path/to/file&quot;</span>, <span class="strin
 <h5 id="examples-15"><a href="#examples-15">Examples</a></h5>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code>
 op.rename(<span class="string">&quot;path/to/file&quot;</span>, <span class="string">&quot;path/to/file2&quot;</span>).<span class="kw">await</span><span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.writer" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#818-820">source</a><h4 class="code-header">pub async fn <a href="#method.writer" class="fn">writer</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Result [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.writer" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#811-813">source</a><h4 class="code-header">pub async fn <a href="#method.writer" class="fn">writer</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Result [...]
 <p>Refer to <a href="struct.Writer.html" title="struct opendal::Writer"><code>Writer</code></a> for more details.</p>
 <h5 id="examples-16"><a href="#examples-16">Examples</a></h5>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bytes::Bytes;
@@ -242,28 +239,32 @@ op.rename(<span class="string">&quot;path/to/file&quot;</span>, <span class="str
 w.write(<span class="macro">vec!</span>[<span class="number">0</span>; <span class="number">4096</span>]).<span class="kw">await</span><span class="question-mark">?</span>;
 w.write(<span class="macro">vec!</span>[<span class="number">1</span>; <span class="number">4096</span>]).<span class="kw">await</span><span class="question-mark">?</span>;
 w.close().<span class="kw">await</span><span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.writer_with" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#845-871">source</a><h4 class="code-header">pub fn <a href="#method.writer_with" class="fn">writer_with</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="struct" href="operator_futures/struct.FutureWriter.html" [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.writer_with" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#840-866">source</a><h4 class="code-header">pub fn <a href="#method.writer_with" class="fn">writer_with</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="struct" href="operator_futures/struct.FutureWriter.html" [...]
 <p>Refer to <a href="struct.Writer.html" title="struct opendal::Writer"><code>Writer</code></a> for more details.</p>
 <h5 id="examples-17"><a href="#examples-17">Examples</a></h5>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bytes::Bytes;
-<span class="kw">use </span>opendal::ops::OpWrite;
 
-<span class="kw">let </span><span class="kw-2">mut </span>w = op.writer_with(<span class="string">&quot;path/to/file&quot;</span>).content_type(<span class="string">&quot;application/octet-stream&quot;</span>).<span class="kw">await</span><span class="question-mark">?</span>;
+<span class="kw">let </span><span class="kw-2">mut </span>w = op
+    .writer_with(<span class="string">&quot;path/to/file&quot;</span>)
+    .content_type(<span class="string">&quot;application/octet-stream&quot;</span>)
+    .<span class="kw">await</span><span class="question-mark">?</span>;
 w.write(<span class="macro">vec!</span>[<span class="number">0</span>; <span class="number">4096</span>]).<span class="kw">await</span><span class="question-mark">?</span>;
 w.write(<span class="macro">vec!</span>[<span class="number">1</span>; <span class="number">4096</span>]).<span class="kw">await</span><span class="question-mark">?</span>;
 w.close().<span class="kw">await</span><span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.write_with" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#894-924">source</a><h4 class="code-header">pub fn <a href="#method.write_with" class="fn">write_with</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, bs: impl <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/conve [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.write_with" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#891-921">source</a><h4 class="code-header">pub fn <a href="#method.write_with" class="fn">write_with</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, bs: impl <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/conve [...]
 <h5 id="notes-10"><a href="#notes-10">Notes</a></h5>
 <ul>
 <li>Write will make sure all bytes has been written, or an error will be returned.</li>
 </ul>
 <h5 id="examples-18"><a href="#examples-18">Examples</a></h5>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bytes::Bytes;
-<span class="kw">use </span>opendal::ops::OpWrite;
 
 <span class="kw">let </span>bs = <span class="string">b&quot;hello, world!&quot;</span>.to_vec();
-<span class="kw">let _ </span>= op.write_with(<span class="string">&quot;path/to/file&quot;</span>, bs).content_type(<span class="string">&quot;text/plain&quot;</span>).<span class="kw">await</span><span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.appender" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#946-948">source</a><h4 class="code-header">pub async fn <a href="#method.appender" class="fn">appender</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result"> [...]
+<span class="kw">let _ </span>= op
+    .write_with(<span class="string">&quot;path/to/file&quot;</span>, bs)
+    .content_type(<span class="string">&quot;text/plain&quot;</span>)
+    .<span class="kw">await</span><span class="question-mark">?</span>;</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.appender" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#943-945">source</a><h4 class="code-header">pub async fn <a href="#method.appender" class="fn">appender</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result"> [...]
 <p>Refer to <a href="struct.Appender.html" title="struct opendal::Appender"><code>Appender</code></a> for more details.</p>
 <h5 id="examples-19"><a href="#examples-19">Examples</a></h5>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bytes::Bytes;
@@ -272,17 +273,19 @@ w.close().<span class="kw">await</span><span class="question-mark">?</span>;</co
 a.append(<span class="macro">vec!</span>[<span class="number">0</span>; <span class="number">4096</span>]).<span class="kw">await</span><span class="question-mark">?</span>;
 a.append(<span class="macro">vec!</span>[<span class="number">1</span>; <span class="number">4096</span>]).<span class="kw">await</span><span class="question-mark">?</span>;
 a.close().<span class="kw">await</span><span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.appender_with" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#971-998">source</a><h4 class="code-header">pub fn <a href="#method.appender_with" class="fn">appender_with</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="struct" href="operator_futures/struct.FutureAppend [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.appender_with" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#970-997">source</a><h4 class="code-header">pub fn <a href="#method.appender_with" class="fn">appender_with</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="struct" href="operator_futures/struct.FutureAppend [...]
 <p>Refer to <a href="struct.Appender.html" title="struct opendal::Appender"><code>Appender</code></a> for more details.</p>
 <h5 id="examples-20"><a href="#examples-20">Examples</a></h5>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bytes::Bytes;
-<span class="kw">use </span>opendal::ops::OpAppend;
 
-<span class="kw">let </span><span class="kw-2">mut </span>a = op.appender_with(<span class="string">&quot;path/to/file&quot;</span>).content_type(<span class="string">&quot;application/octet-stream&quot;</span>).<span class="kw">await</span><span class="question-mark">?</span>;
+<span class="kw">let </span><span class="kw-2">mut </span>a = op
+    .appender_with(<span class="string">&quot;path/to/file&quot;</span>)
+    .content_type(<span class="string">&quot;application/octet-stream&quot;</span>)
+    .<span class="kw">await</span><span class="question-mark">?</span>;
 a.append(<span class="macro">vec!</span>[<span class="number">0</span>; <span class="number">4096</span>]).<span class="kw">await</span><span class="question-mark">?</span>;
 a.append(<span class="macro">vec!</span>[<span class="number">1</span>; <span class="number">4096</span>]).<span class="kw">await</span><span class="question-mark">?</span>;
 a.close().<span class="kw">await</span><span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.append_with" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#1023-1054">source</a><h4 class="code-header">pub fn <a href="#method.append_with" class="fn">append_with</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, bs: impl <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/ [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.append_with" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#1024-1055">source</a><h4 class="code-header">pub fn <a href="#method.append_with" class="fn">append_with</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, bs: impl <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/ [...]
 <h5 id="notes-11"><a href="#notes-11">Notes</a></h5>
 <ul>
 <li>Append will make sure all bytes has been written, or an error will be returned.</li>
@@ -291,24 +294,26 @@ a.close().<span class="kw">await</span><span class="question-mark">?</span>;</co
 </ul>
 <h5 id="examples-21"><a href="#examples-21">Examples</a></h5>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>bytes::Bytes;
-<span class="kw">use </span>opendal::ops::OpAppend;
 
 <span class="kw">let </span>bs = <span class="string">b&quot;hello, world!&quot;</span>.to_vec();
-<span class="kw">let _ </span>= op.append_with(<span class="string">&quot;path/to/file&quot;</span>, bs).content_type(<span class="string">&quot;text/plain&quot;</span>).<span class="kw">await</span><span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.delete" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#1074-1080">source</a><h4 class="code-header">pub async fn <a href="#method.delete" class="fn">delete</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Resu [...]
+<span class="kw">let _ </span>= op
+    .append_with(<span class="string">&quot;path/to/file&quot;</span>, bs)
+    .content_type(<span class="string">&quot;text/plain&quot;</span>)
+    .<span class="kw">await</span><span class="question-mark">?</span>;</code></pre></div>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.delete" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#1075-1081">source</a><h4 class="code-header">pub async fn <a href="#method.delete" class="fn">delete</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Resu [...]
 <h5 id="notes-12"><a href="#notes-12">Notes</a></h5>
 <ul>
 <li>Deleting a file that does not exist won’t return errors.</li>
 </ul>
 <h5 id="examples-22"><a href="#examples-22">Examples</a></h5>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code>op.delete(<span class="string">&quot;test&quot;</span>).<span class="kw">await</span><span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.remove" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#1102-1104">source</a><h4 class="code-header">pub async fn <a href="#method.remove" class="fn">remove</a>(&amp;self, paths: <a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="https://doc.rust-lang.org/ [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.remove" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#1103-1105">source</a><h4 class="code-header">pub async fn <a href="#method.remove" class="fn">remove</a>(&amp;self, paths: <a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="https://doc.rust-lang.org/ [...]
 <p>If underlying services support delete in batch, we will use batch
 delete instead.</p>
 <h5 id="examples-23"><a href="#examples-23">Examples</a></h5>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code>op.remove(<span class="macro">vec!</span>[<span class="string">&quot;abc&quot;</span>.to_string(), <span class="string">&quot;def&quot;</span>.to_string()])
     .<span class="kw">await</span><span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.remove_via" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#1132-1161">source</a><h4 class="code-header">pub async fn <a href="#method.remove_via" class="fn">remove_via</a>(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.remove_via" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#1133-1162">source</a><h4 class="code-header">pub async fn <a href="#method.remove_via" class="fn">remove_via</a>(
     &amp;self,
     input: impl Stream&lt;Item = <a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt; + <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>
 ) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>remove will remove files via the given paths.</p>
@@ -321,13 +326,13 @@ delete instead.</p>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>futures::stream;
 <span class="kw">let </span>stream = stream::iter(<span class="macro">vec!</span>[<span class="string">&quot;abc&quot;</span>.to_string(), <span class="string">&quot;def&quot;</span>.to_string()]);
 op.remove_via(stream).<span class="kw">await</span><span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.remove_all" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#1183-1231">source</a><h4 class="code-header">pub async fn <a href="#method.remove_all" class="fn">remove_all</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal:: [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.remove_all" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#1184-1232">source</a><h4 class="code-header">pub async fn <a href="#method.remove_all" class="fn">remove_all</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal:: [...]
 <h5 id="notes-15"><a href="#notes-15">Notes</a></h5>
 <p>If underlying services support delete in batch, we will use batch
 delete instead.</p>
 <h5 id="examples-25"><a href="#examples-25">Examples</a></h5>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code>op.remove_all(<span class="string">&quot;path/to/dir&quot;</span>).<span class="kw">await</span><span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.list" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#1266-1268">source</a><h4 class="code-header">pub async fn <a href="#method.list" class="fn">list</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Result</a> [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.list" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#1267-1269">source</a><h4 class="code-header">pub async fn <a href="#method.list" class="fn">list</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Result</a> [...]
 <p>This function will create a new handle to list entries.</p>
 <p>An error will be returned if given path doesn’t end with <code>/</code>.</p>
 <h5 id="examples-26"><a href="#examples-26">Examples</a></h5>
@@ -348,16 +353,19 @@ delete instead.</p>
         EntryMode::Unknown =&gt; <span class="kw">continue</span>,
     }
 }</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.list_with" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#1337-1364">source</a><h4 class="code-header">pub fn <a href="#method.list_with" class="fn">list_with</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="struct" href="operator_futures/struct.FutureList.html" title [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.list_with" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#1340-1367">source</a><h4 class="code-header">pub fn <a href="#method.list_with" class="fn">list_with</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="struct" href="operator_futures/struct.FutureList.html" title [...]
 <p>This function will create a new handle to list entries.</p>
 <p>An error will be returned if given path doesn’t end with <code>/</code>.</p>
 <h5 id="examples-27"><a href="#examples-27">Examples</a></h5><h6 id="list-current-dir"><a href="#list-current-dir">List current dir</a></h6>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>futures::TryStreamExt;
-<span class="kw">use </span>opendal::ops::OpList;
 <span class="kw">use </span>opendal::EntryMode;
 <span class="kw">use </span>opendal::Metakey;
 <span class="kw">use </span>opendal::Operator;
-<span class="kw">let </span><span class="kw-2">mut </span>ds = op.list_with(<span class="string">&quot;path/to/dir/&quot;</span>).limit(<span class="number">10</span>).start_after(<span class="string">&quot;start&quot;</span>).<span class="kw">await</span><span class="question-mark">?</span>;
+<span class="kw">let </span><span class="kw-2">mut </span>ds = op
+    .list_with(<span class="string">&quot;path/to/dir/&quot;</span>)
+    .limit(<span class="number">10</span>)
+    .start_after(<span class="string">&quot;start&quot;</span>)
+    .<span class="kw">await</span><span class="question-mark">?</span>;
 <span class="kw">while let </span><span class="prelude-val">Some</span>(<span class="kw-2">mut </span>de) = ds.try_next().<span class="kw">await</span><span class="question-mark">? </span>{
     <span class="kw">let </span>meta = op.metadata(<span class="kw-2">&amp;</span>de, Metakey::Mode).<span class="kw">await</span><span class="question-mark">?</span>;
     <span class="kw">match </span>meta.mode() {
@@ -374,7 +382,6 @@ delete instead.</p>
 <p>We can use <code>op.scan()</code> as a shorter alias.</p>
 
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>futures::TryStreamExt;
-<span class="kw">use </span>opendal::ops::OpList;
 <span class="kw">use </span>opendal::EntryMode;
 <span class="kw">use </span>opendal::Metakey;
 <span class="kw">use </span>opendal::Operator;
@@ -391,7 +398,7 @@ delete instead.</p>
         EntryMode::Unknown =&gt; <span class="kw">continue</span>,
     }
 }</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.scan" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#1405-1407">source</a><h4 class="code-header">pub async fn <a href="#method.scan" class="fn">scan</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Result</a> [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.scan" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#1408-1410">source</a><h4 class="code-header">pub async fn <a href="#method.scan" class="fn">scan</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Result</a> [...]
 <p>Also, this function can be used to list a prefix.</p>
 <p>An error will be returned if given path doesn’t end with <code>/</code>.</p>
 <h5 id="notes-16"><a href="#notes-16">Notes</a></h5>
@@ -417,8 +424,8 @@ delete instead.</p>
         EntryMode::Unknown =&gt; <span class="kw">continue</span>,
     }
 }</code></pre></div>
-</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Operator-2" class="impl"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#1410-1590">source</a><a href="#impl-Operator-2" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Operator.html" title="struct opendal::Operator">Operator</a></h3></section></summary><div class="docblock"><p>Operator presign API.</p>
-</div><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.presign_stat" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#1432-1439">source</a><h4 class="code-header">pub async fn <a href="#method.presign_stat" class="fn">presign_stat</a>(
+</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Operator-2" class="impl"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#1413-1591">source</a><a href="#impl-Operator-2" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Operator.html" title="struct opendal::Operator">Operator</a></h3></section></summary><div class="docblock"><p>Operator presign API.</p>
+</div><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.presign_stat" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#1435-1442">source</a><h4 class="code-header">pub async fn <a href="#method.presign_stat" class="fn">presign_stat</a>(
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
     expire: <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>
@@ -437,7 +444,7 @@ delete instead.</p>
         .uri(signed_req.uri())
         .body(())<span class="question-mark">?</span>;
 </code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.presign_read" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#1467-1474">source</a><h4 class="code-header">pub async fn <a href="#method.presign_read" class="fn">presign_read</a>(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.presign_read" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#1470-1477">source</a><h4 class="code-header">pub async fn <a href="#method.presign_read" class="fn">presign_read</a>(
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
     expire: <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>
@@ -458,14 +465,13 @@ delete instead.</p>
 </ul>
 <p>We can download this file via <code>curl</code> or other tools without credentials:</p>
 <div class="example-wrap"><pre class="language-shell"><code>curl &quot;https://s3.amazonaws.com/examplebucket/test.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Credential=access_key_id/20130721/us-east-1/s3/aws4_request&amp;X-Amz-Date=20130721T201207Z&amp;X-Amz-Expires=86400&amp;X-Amz-SignedHeaders=host&amp;X-Amz-Signature=&lt;signature-value&gt;&quot; -O /tmp/test.txt
-</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.presign_read_with" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#1498-1515">source</a><h4 class="code-header">pub fn <a href="#method.presign_read_with" class="fn">presign_read_with</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, expire: <a class="struct" href="h [...]
+</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.presign_read_with" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#1500-1517">source</a><h4 class="code-header">pub fn <a href="#method.presign_read_with" class="fn">presign_read_with</a>(&amp;self, path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>, expire: <a class="struct" href="h [...]
 <p>You can pass <code>OpRead</code> to this method to specify the content disposition.</p>
 <h5 id="example-3"><a href="#example-3">Example</a></h5>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>anyhow::Result;
 <span class="kw">use </span>futures::io;
 <span class="kw">use </span>opendal::Operator;
 <span class="kw">use </span>std::time::Duration;
-<span class="kw">use </span>opendal::ops::OpRead;
 
 <span class="attr">#[tokio::main]
 </span><span class="kw">async fn </span>test(op: Operator) -&gt; <span class="prelude-ty">Result</span>&lt;()&gt; {
@@ -473,7 +479,7 @@ delete instead.</p>
         .presign_read_with(<span class="string">&quot;test.txt&quot;</span>, Duration::from_secs(<span class="number">3600</span>))
         .override_content_disposition(<span class="string">&quot;attachment; filename=\&quot;othertext.txt\&quot;&quot;</span>)
         .<span class="kw">await</span><span class="question-mark">?</span>;</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.presign_write" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#1543-1545">source</a><h4 class="code-header">pub async fn <a href="#method.presign_write" class="fn">presign_write</a>(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.presign_write" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#1545-1547">source</a><h4 class="code-header">pub async fn <a href="#method.presign_write" class="fn">presign_write</a>(
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
     expire: <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>
@@ -494,7 +500,7 @@ delete instead.</p>
 </ul>
 <p>We can upload file as this file via <code>curl</code> or other tools without credential:</p>
 <div class="example-wrap"><pre class="language-shell"><code>curl -X PUT &quot;https://s3.amazonaws.com/examplebucket/test.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Credential=access_key_id/20130721/us-east-1/s3/aws4_request&amp;X-Amz-Date=20130721T201207Z&amp;X-Amz-Expires=86400&amp;X-Amz-SignedHeaders=host&amp;X-Amz-Signature=&lt;signature-value&gt;&quot; -d &quot;Hello, World!&quot;
-</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.presign_write_with" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#1572-1589">source</a><h4 class="code-header">pub fn <a href="#method.presign_write_with" class="fn">presign_write_with</a>(
+</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.presign_write_with" class="method"><a class="srclink rightside" href="../src/opendal/types/operator/operator.rs.html#1573-1590">source</a><h4 class="code-header">pub fn <a href="#method.presign_write_with" class="fn">presign_write_with</a>(
     &amp;self,
     path: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
     expire: <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>
@@ -503,7 +509,6 @@ delete instead.</p>
 <h5 id="example-5"><a href="#example-5">Example</a></h5>
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>anyhow::Result;
 <span class="kw">use </span>futures::io;
-<span class="kw">use </span>opendal::ops::OpWrite;
 <span class="kw">use </span>opendal::Operator;
 <span class="kw">use </span>std::time::Duration;
 
diff --git a/docs/rust/opendal/struct.Reader.html b/docs/rust/opendal/struct.Reader.html
index 4cfa9abb..bf99c597 100644
--- a/docs/rust/opendal/struct.Reader.html
+++ b/docs/rust/opendal/struct.Reader.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Reader is designed to read data from given path in an asynchronous manner."><title>Reader in opendal - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/w [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Reader is designed to read data from given path in an asynchronous manner."><title>Reader in opendal - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/w [...]
 manner.</p>
 <h2 id="usage"><a href="#usage">Usage</a></h2>
 <p>Reader implements the following APIs:</p>
@@ -17,7 +17,7 @@ want to do copy inside IO workers. They can use <code>Stream</code> to get a <co
 and consume it in side CPU workers inside.</p>
 <p>Besides, <code>Stream</code> <strong>COULD</strong> reduce an extra copy if underlying reader is
 stream based (like services s3, azure which based on HTTP).</p>
-</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-AsyncRead-for-Reader" class="impl"><a class="srclink rightside" href="../src/opendal/types/reader.rs.html#94-102">source</a><a href="#impl-AsyncRead-for-Reader" class="anchor">§</a><h3 class="code-header">impl AsyncRead for  [...]
+</div></details><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-AsyncRead-for-Reader" class="impl"><a class="srclink rightside" href="../src/opendal/types/reader.rs.html#93-101">source</a><a href="#impl-AsyncRead-for-Reader" class="anchor">§</a><h3 class="code-header">impl AsyncRead for  [...]
     self: <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a>&gt;,
     cx: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;,
     buf: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.u8.html">u8</a>]
@@ -26,19 +26,19 @@ stream based (like services s3, azure which based on HTTP).</p>
     cx: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;,
     bufs: &amp;mut [<a class="struct" href="https://doc.rust-lang.org/1.69.0/std/io/struct.IoSliceMut.html" title="struct std::io::IoSliceMut">IoSliceMut</a>&lt;'_&gt;]
 ) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="enum" href="https://doc.rust-lang.org/1.69.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.usize.html">usize</a>, <a class="struct" href="https://doc.rust-lang.org/1.69.0/std/io/error/struct.Error.html" title="struct std::io::error::E [...]
-IO operations. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-AsyncRead-for-Reader-1" class="impl"><a class="srclink rightside" href="../src/opendal/types/reader.rs.html#114-128">source</a><a href="#impl-AsyncRead-for-Reader-1" class="anchor">§</a><h3 class="code-header">impl AsyncRead for <a class="struct" href="struct.Reader.html" title="struct opendal::Reader">Reader</a></h3></section></summary><div class="im [...]
+IO operations. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-AsyncRead-for-Reader-1" class="impl"><a class="srclink rightside" href="../src/opendal/types/reader.rs.html#113-127">source</a><a href="#impl-AsyncRead-for-Reader-1" class="anchor">§</a><h3 class="code-header">impl AsyncRead for <a class="struct" href="struct.Reader.html" title="struct opendal::Reader">Reader</a></h3></section></summary><div class="im [...]
     self: <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a>&gt;,
     cx: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;,
     buf: &amp;mut ReadBuf&lt;'_&gt;
-) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="https://doc.rust-lang.org/1.69.0/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.unit.html">()</a>&gt;&gt;</h4></section></summary><div class='docblock'>Attempts to read from the <code>AsyncRead</code> into <code>buf</cod [...]
+) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="https://doc.rust-lang.org/1.69.0/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.unit.html">()</a>&gt;&gt;</h4></section></summary><div class='docblock'>Attempts to read from the <code>AsyncRead</code> into <code>buf</cod [...]
     self: <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a>&gt;,
     cx: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;,
     pos: <a class="enum" href="https://doc.rust-lang.org/1.69.0/std/io/enum.SeekFrom.html" title="enum std::io::SeekFrom">SeekFrom</a>
-) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="https://doc.rust-lang.org/1.69.0/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.u64.html">u64</a>&gt;&gt;</h4></section></summary><div class='docblock'>Attempt to seek to an offset, in bytes, in a stream. <a>Read more</a [...]
+) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="https://doc.rust-lang.org/1.69.0/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.u64.html">u64</a>&gt;&gt;</h4></section></summary><div class='docblock'>Attempt to seek to an offset, in bytes, in a stream. <a>Read more</a [...]
     &amp;mut self,
     cx: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;,
     buf: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.u8.html">u8</a>]
-) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.usize.html">usize</a>&gt;&gt;</h4></section></summary><div class='docblock'>Read bytes asynchronously.</div></details><details class="toggle method-toggle" open><summary><section id="method.pol [...]
+) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.usize.html">usize</a>&gt;&gt;</h4></section></summary><div class='docblock'>Read bytes asynchronously.</div></details><details class="toggle method-toggle" open><summary><section id="method.pol [...]
     self: <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a>&gt;,
     cx: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;
 ) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="enum" href="https://doc.rust-lang.org/1.69.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self::Item&gt;&gt;</h4></section></summary><div class='docblock'>Attempt to pull out the next value of this stream, registering the
diff --git a/docs/rust/opendal/struct.Writer.html b/docs/rust/opendal/struct.Writer.html
index b78f6f4d..3ed7c3f9 100644
--- a/docs/rust/opendal/struct.Writer.html
+++ b/docs/rust/opendal/struct.Writer.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Writer is designed to write data into given path in an asynchronous manner."><title>Writer in opendal - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/ [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Writer is designed to write data into given path in an asynchronous manner."><title>Writer in opendal - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/ [...]
 manner.</p>
 <h3 id="notes"><a href="#notes">Notes</a></h3>
 <p>Please make sure either <code>close</code> or <code>abort</code> has been called before
@@ -15,37 +15,37 @@ be written in one request.</p>
 <p>Some services also supports <code>unsized</code> writer. They MAY buffer part of the data
 and flush them into storage at needs. And finally, the file will be available
 after <code>close</code> has been called.</p>
-</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Writer" class="impl"><a class="srclink rightside" href="../src/opendal/types/writer.rs.html#66-127">source</a><a href="#impl-Writer" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Writer.html" title="struct opendal: [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.abort" class="method"><a class="srclink rightside" href="../src/opendal/types/writer.rs.html#100-109">source</a><h4 class="code-header">pub async fn <a href="#method.abort" class="fn">abort</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.unit.html">()</a>&gt;</h4></sect [...]
+</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Writer" class="impl"><a class="srclink rightside" href="../src/opendal/types/writer.rs.html#65-126">source</a><a href="#impl-Writer" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Writer.html" title="struct opendal: [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.abort" class="method"><a class="srclink rightside" href="../src/opendal/types/writer.rs.html#99-108">source</a><h4 class="code-header">pub async fn <a href="#method.abort" class="fn">abort</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.unit.html">()</a>&gt;</h4></secti [...]
 <h6 id="notes-2"><a href="#notes-2">Notes</a></h6>
 <p>Abort should only be called when the writer is not closed or
 aborted, otherwise an unexpected error could be returned.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.close" class="method"><a class="srclink rightside" href="../src/opendal/types/writer.rs.html#117-126">source</a><h4 class="code-header">pub async fn <a href="#method.close" class="fn">close</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.unit.html">()</a>&gt;</h4></sect [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.close" class="method"><a class="srclink rightside" href="../src/opendal/types/writer.rs.html#116-125">source</a><h4 class="code-header">pub async fn <a href="#method.close" class="fn">close</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.unit.html">()</a>&gt;</h4></sect [...]
 <h6 id="notes-3"><a href="#notes-3">Notes</a></h6>
 <p>Close should only be called when the writer is not closed or
 aborted, otherwise an unexpected error could be returned.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-AsyncWrite-for-Writer" class="impl"><a class="srclink rightside" href="../src/opendal/types/writer.rs.html#145-210">source</a><a href="#impl-AsyncWrite-for-Writer" class="anchor">§</a><h3 class="code-he [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.poll_write" class="method trait-impl"><a class="srclink rightside" href="../src/opendal/types/writer.rs.html#146-177">source</a><a href="#method.poll_write" class="anchor">§</a><h4 class="code-header">fn <a class="fn">poll_write</a>(
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-AsyncWrite-for-Writer" class="impl"><a class="srclink rightside" href="../src/opendal/types/writer.rs.html#144-209">source</a><a href="#impl-AsyncWrite-for-Writer" class="anchor">§</a><h3 class="code-he [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.poll_write" class="method trait-impl"><a class="srclink rightside" href="../src/opendal/types/writer.rs.html#145-176">source</a><a href="#method.poll_write" class="anchor">§</a><h4 class="code-header">fn <a class="fn">poll_write</a>(
     self: <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a>&gt;,
     cx: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;,
     buf: &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.u8.html">u8</a>]
-) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="https://doc.rust-lang.org/1.69.0/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.usize.html">usize</a>&gt;&gt;</h4></section></summary><div class='docblock'>Attempt to write bytes from <code>buf</code> into the object. <a [...]
+) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="https://doc.rust-lang.org/1.69.0/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.usize.html">usize</a>&gt;&gt;</h4></section></summary><div class='docblock'>Attempt to write bytes from <code>buf</code> into the object. <a [...]
     self: <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a>&gt;,
     cx: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;,
     bufs: &amp;[<a class="struct" href="https://doc.rust-lang.org/1.69.0/std/io/struct.IoSlice.html" title="struct std::io::IoSlice">IoSlice</a>&lt;'_&gt;]
 ) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="enum" href="https://doc.rust-lang.org/1.69.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.usize.html">usize</a>, <a class="struct" href="https://doc.rust-lang.org/1.69.0/std/io/error/struct.Error.html" title="struct std::io::error::E [...]
-IO operations. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-AsyncWrite-for-Writer-1" class="impl"><a class="srclink rightside" href="../src/opendal/types/writer.rs.html#212-276">source</a><a href="#impl-AsyncWrite-for-Writer-1" class="anchor">§</a><h3 class="code-header">impl AsyncWrite for <a class="struct" href="struct.Writer.html" title="struct opendal::Writer">Writer</a></h3></section></summary><div class= [...]
+IO operations. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-AsyncWrite-for-Writer-1" class="impl"><a class="srclink rightside" href="../src/opendal/types/writer.rs.html#211-275">source</a><a href="#impl-AsyncWrite-for-Writer-1" class="anchor">§</a><h3 class="code-header">impl AsyncWrite for <a class="struct" href="struct.Writer.html" title="struct opendal::Writer">Writer</a></h3></section></summary><div class= [...]
     self: <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a>&gt;,
     cx: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;,
     buf: &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.u8.html">u8</a>]
-) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="https://doc.rust-lang.org/1.69.0/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.usize.html">usize</a>&gt;&gt;</h4></section></summary><div class='docblock'>Attempt to write bytes from <code>buf</code> into the object. <a [...]
-their destination. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.poll_shutdown" class="method trait-impl"><a class="srclink rightside" href="../src/opendal/types/writer.rs.html#250-275">source</a><a href="#method.poll_shutdown" class="anchor">§</a><h4 class="code-header">fn <a class="fn">poll_shutdown</a>(self: <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>& [...]
+) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="type" href="https://doc.rust-lang.org/1.69.0/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.usize.html">usize</a>&gt;&gt;</h4></section></summary><div class='docblock'>Attempt to write bytes from <code>buf</code> into the object. <a [...]
+their destination. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.poll_shutdown" class="method trait-impl"><a class="srclink rightside" href="../src/opendal/types/writer.rs.html#249-274">source</a><a href="#method.poll_shutdown" class="anchor">§</a><h4 class="code-header">fn <a class="fn">poll_shutdown</a>(self: <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>& [...]
 the I/O connection has completely shut down. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.poll_write_vectored-1" class="method trait-impl"><a href="#method.poll_write_vectored-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">poll_write_vectored</a>(
     self: <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp;mut Self</a>&gt;,
     cx: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;,
     bufs: &amp;[<a class="struct" href="https://doc.rust-lang.org/1.69.0/std/io/struct.IoSlice.html" title="struct std::io::IoSlice">IoSlice</a>&lt;'_&gt;]
 ) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.69.0/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;<a class="enum" href="https://doc.rust-lang.org/1.69.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.usize.html">usize</a>, <a class="struct" href="https://doc.rust-lang.org/1.69.0/std/io/error/struct.Error.html" title="struct std::io::error::E [...]
-implementation. <a>Read more</a></div></details></div></details><section id="impl-Sync-for-Writer" class="impl"><a class="srclink rightside" href="../src/opendal/types/writer.rs.html#64">source</a><a href="#impl-Sync-for-Writer" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Writer.html" title="struct opendal::Writer">Writer</ [...]
+implementation. <a>Read more</a></div></details></div></details><section id="impl-Sync-for-Writer" class="impl"><a class="srclink rightside" href="../src/opendal/types/writer.rs.html#63">source</a><a href="#impl-Sync-for-Writer" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Writer.html" title="struct opendal::Writer">Writer</ [...]
 <p>Writer will only be accessed by <code>&amp;mut Self</code></p>
 </div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Writer" class="impl"><a href="#impl-RefUnwindSafe-for-Writer" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_s [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="srclink rightside" href="https://doc.rust-lang.org/1.69.0/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a h [...]
diff --git a/docs/rust/opendal/trait.Builder.html b/docs/rust/opendal/trait.Builder.html
index a5aac9b2..9d6654ae 100644
--- a/docs/rust/opendal/trait.Builder.html
+++ b/docs/rust/opendal/trait.Builder.html
@@ -22,4 +22,4 @@ We also promise that every public API will provide detailed documentation.</p>
 </div></details></div><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="tymethod.from_map" class="method"><a class="srclink rightside" href="../src/opendal/types/builder.rs.html#45">source</a><h4 class="code-header">fn <a href="#tymethod.from_map" class="fn">from_map</a>(map: <a class="struct" href="https://doc.rust-lang.org/1.69. [...]
 </div></details><details class="toggle method-toggle" open><summary><section id="tymethod.build" class="method"><a class="srclink rightside" href="../src/opendal/types/builder.rs.html#48">source</a><h4 class="code-header">fn <a href="#tymethod.build" class="fn">build</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type opendal::Result">Result</a>&lt;Self::<a class="associatedtype" href="trait.Builder.html#associatedtype.Accessor" title="type opendal::Builder::Acce [...]
 </div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-Builder-for-()" class="impl"><a class="srclink rightside" href="../src/opendal/types/builder.rs.html#52-62">source</a><a href="#impl-Builder-for-()" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Builder.html" title="trait opendal::Bu [...]
-</div><div class="impl-items"><section id="associatedconstant.SCHEME-1" class="associatedconstant trait-impl"><a class="srclink rightside" href="../src/opendal/types/builder.rs.html#53">source</a><a href="#associatedconstant.SCHEME-1" class="anchor">§</a><h4 class="code-header">const <a href="#associatedconstant.SCHEME" class="constant">SCHEME</a>: <a class="enum" href="enum.Scheme.html" title="enum opendal::Scheme">Scheme</a> = _</h4></section><section id="associatedtype.Accessor-1" cla [...]
\ No newline at end of file
+</div><div class="impl-items"><section id="associatedconstant.SCHEME-1" class="associatedconstant trait-impl"><a class="srclink rightside" href="../src/opendal/types/builder.rs.html#53">source</a><a href="#associatedconstant.SCHEME-1" class="anchor">§</a><h4 class="code-header">const <a href="#associatedconstant.SCHEME" class="constant">SCHEME</a>: <a class="enum" href="enum.Scheme.html" title="enum opendal::Scheme">Scheme</a> = _</h4></section><section id="associatedtype.Accessor-1" cla [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/types/ops/enum.BatchOperation.html b/docs/rust/opendal/types/ops/enum.BatchOperation.html
deleted file mode 100644
index 0a7a5b5c..00000000
--- a/docs/rust/opendal/types/ops/enum.BatchOperation.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta http-equiv="refresh" content="0;URL=../../../opendal/ops/enum.BatchOperation.html">
-    <title>Redirection</title>
-</head>
-<body>
-    <p>Redirecting to <a href="../../../opendal/ops/enum.BatchOperation.html">../../../opendal/ops/enum.BatchOperation.html</a>...</p>
-    <script>location.replace("../../../opendal/ops/enum.BatchOperation.html" + location.search + location.hash);</script>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/rust/opendal/types/ops/enum.PresignOperation.html b/docs/rust/opendal/types/ops/enum.PresignOperation.html
deleted file mode 100644
index ec2c8b74..00000000
--- a/docs/rust/opendal/types/ops/enum.PresignOperation.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta http-equiv="refresh" content="0;URL=../../../opendal/ops/enum.PresignOperation.html">
-    <title>Redirection</title>
-</head>
-<body>
-    <p>Redirecting to <a href="../../../opendal/ops/enum.PresignOperation.html">../../../opendal/ops/enum.PresignOperation.html</a>...</p>
-    <script>location.replace("../../../opendal/ops/enum.PresignOperation.html" + location.search + location.hash);</script>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/rust/opendal/types/ops/index.html b/docs/rust/opendal/types/ops/index.html
deleted file mode 100644
index f1884961..00000000
--- a/docs/rust/opendal/types/ops/index.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta http-equiv="refresh" content="0;URL=../../../opendal/ops/index.html">
-    <title>Redirection</title>
-</head>
-<body>
-    <p>Redirecting to <a href="../../../opendal/ops/index.html">../../../opendal/ops/index.html</a>...</p>
-    <script>location.replace("../../../opendal/ops/index.html" + location.search + location.hash);</script>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/rust/opendal/types/ops/struct.OpAppend.html b/docs/rust/opendal/types/ops/struct.OpAppend.html
deleted file mode 100644
index fc0e045c..00000000
--- a/docs/rust/opendal/types/ops/struct.OpAppend.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta http-equiv="refresh" content="0;URL=../../../opendal/ops/struct.OpAppend.html">
-    <title>Redirection</title>
-</head>
-<body>
-    <p>Redirecting to <a href="../../../opendal/ops/struct.OpAppend.html">../../../opendal/ops/struct.OpAppend.html</a>...</p>
-    <script>location.replace("../../../opendal/ops/struct.OpAppend.html" + location.search + location.hash);</script>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/rust/opendal/types/ops/struct.OpBatch.html b/docs/rust/opendal/types/ops/struct.OpBatch.html
deleted file mode 100644
index 4c5b65ec..00000000
--- a/docs/rust/opendal/types/ops/struct.OpBatch.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta http-equiv="refresh" content="0;URL=../../../opendal/ops/struct.OpBatch.html">
-    <title>Redirection</title>
-</head>
-<body>
-    <p>Redirecting to <a href="../../../opendal/ops/struct.OpBatch.html">../../../opendal/ops/struct.OpBatch.html</a>...</p>
-    <script>location.replace("../../../opendal/ops/struct.OpBatch.html" + location.search + location.hash);</script>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/rust/opendal/types/ops/struct.OpCopy.html b/docs/rust/opendal/types/ops/struct.OpCopy.html
deleted file mode 100644
index ded84f56..00000000
--- a/docs/rust/opendal/types/ops/struct.OpCopy.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta http-equiv="refresh" content="0;URL=../../../opendal/ops/struct.OpCopy.html">
-    <title>Redirection</title>
-</head>
-<body>
-    <p>Redirecting to <a href="../../../opendal/ops/struct.OpCopy.html">../../../opendal/ops/struct.OpCopy.html</a>...</p>
-    <script>location.replace("../../../opendal/ops/struct.OpCopy.html" + location.search + location.hash);</script>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/rust/opendal/types/ops/struct.OpCreateDir.html b/docs/rust/opendal/types/ops/struct.OpCreateDir.html
deleted file mode 100644
index 7213d5ca..00000000
--- a/docs/rust/opendal/types/ops/struct.OpCreateDir.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta http-equiv="refresh" content="0;URL=../../../opendal/ops/struct.OpCreateDir.html">
-    <title>Redirection</title>
-</head>
-<body>
-    <p>Redirecting to <a href="../../../opendal/ops/struct.OpCreateDir.html">../../../opendal/ops/struct.OpCreateDir.html</a>...</p>
-    <script>location.replace("../../../opendal/ops/struct.OpCreateDir.html" + location.search + location.hash);</script>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/rust/opendal/types/ops/struct.OpDelete.html b/docs/rust/opendal/types/ops/struct.OpDelete.html
deleted file mode 100644
index 7b421d5a..00000000
--- a/docs/rust/opendal/types/ops/struct.OpDelete.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta http-equiv="refresh" content="0;URL=../../../opendal/ops/struct.OpDelete.html">
-    <title>Redirection</title>
-</head>
-<body>
-    <p>Redirecting to <a href="../../../opendal/ops/struct.OpDelete.html">../../../opendal/ops/struct.OpDelete.html</a>...</p>
-    <script>location.replace("../../../opendal/ops/struct.OpDelete.html" + location.search + location.hash);</script>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/rust/opendal/types/ops/struct.OpList.html b/docs/rust/opendal/types/ops/struct.OpList.html
deleted file mode 100644
index 55f45317..00000000
--- a/docs/rust/opendal/types/ops/struct.OpList.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta http-equiv="refresh" content="0;URL=../../../opendal/ops/struct.OpList.html">
-    <title>Redirection</title>
-</head>
-<body>
-    <p>Redirecting to <a href="../../../opendal/ops/struct.OpList.html">../../../opendal/ops/struct.OpList.html</a>...</p>
-    <script>location.replace("../../../opendal/ops/struct.OpList.html" + location.search + location.hash);</script>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/rust/opendal/types/ops/struct.OpPresign.html b/docs/rust/opendal/types/ops/struct.OpPresign.html
deleted file mode 100644
index 721d9c5e..00000000
--- a/docs/rust/opendal/types/ops/struct.OpPresign.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta http-equiv="refresh" content="0;URL=../../../opendal/ops/struct.OpPresign.html">
-    <title>Redirection</title>
-</head>
-<body>
-    <p>Redirecting to <a href="../../../opendal/ops/struct.OpPresign.html">../../../opendal/ops/struct.OpPresign.html</a>...</p>
-    <script>location.replace("../../../opendal/ops/struct.OpPresign.html" + location.search + location.hash);</script>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/rust/opendal/types/ops/struct.OpRead.html b/docs/rust/opendal/types/ops/struct.OpRead.html
deleted file mode 100644
index 68218125..00000000
--- a/docs/rust/opendal/types/ops/struct.OpRead.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta http-equiv="refresh" content="0;URL=../../../opendal/ops/struct.OpRead.html">
-    <title>Redirection</title>
-</head>
-<body>
-    <p>Redirecting to <a href="../../../opendal/ops/struct.OpRead.html">../../../opendal/ops/struct.OpRead.html</a>...</p>
-    <script>location.replace("../../../opendal/ops/struct.OpRead.html" + location.search + location.hash);</script>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/rust/opendal/types/ops/struct.OpRename.html b/docs/rust/opendal/types/ops/struct.OpRename.html
deleted file mode 100644
index bd9e0e46..00000000
--- a/docs/rust/opendal/types/ops/struct.OpRename.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta http-equiv="refresh" content="0;URL=../../../opendal/ops/struct.OpRename.html">
-    <title>Redirection</title>
-</head>
-<body>
-    <p>Redirecting to <a href="../../../opendal/ops/struct.OpRename.html">../../../opendal/ops/struct.OpRename.html</a>...</p>
-    <script>location.replace("../../../opendal/ops/struct.OpRename.html" + location.search + location.hash);</script>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/rust/opendal/types/ops/struct.OpStat.html b/docs/rust/opendal/types/ops/struct.OpStat.html
deleted file mode 100644
index 6ad3771c..00000000
--- a/docs/rust/opendal/types/ops/struct.OpStat.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta http-equiv="refresh" content="0;URL=../../../opendal/ops/struct.OpStat.html">
-    <title>Redirection</title>
-</head>
-<body>
-    <p>Redirecting to <a href="../../../opendal/ops/struct.OpStat.html">../../../opendal/ops/struct.OpStat.html</a>...</p>
-    <script>location.replace("../../../opendal/ops/struct.OpStat.html" + location.search + location.hash);</script>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/rust/opendal/types/ops/struct.OpWrite.html b/docs/rust/opendal/types/ops/struct.OpWrite.html
deleted file mode 100644
index 5d76ffdb..00000000
--- a/docs/rust/opendal/types/ops/struct.OpWrite.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta http-equiv="refresh" content="0;URL=../../../opendal/ops/struct.OpWrite.html">
-    <title>Redirection</title>
-</head>
-<body>
-    <p>Redirecting to <a href="../../../opendal/ops/struct.OpWrite.html">../../../opendal/ops/struct.OpWrite.html</a>...</p>
-    <script>location.replace("../../../opendal/ops/struct.OpWrite.html" + location.search + location.hash);</script>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/rust/search-index.js b/docs/rust/search-index.js
index baf160d8..f6f5fb91 100644
--- a/docs/rust/search-index.js
+++ b/docs/rust/search-index.js
@@ -1,5 +1,5 @@
 var searchIndex = JSON.parse('{\
-"opendal":{"doc":"OpenDAL is the Open Data Access Layer to <strong>freely</strong> access …","t":"QNDNNDDDDINDNNNNNNNNNNNNNNDEDENNNNNNNNNNNNNNDNNDENNNNNNDDDNNNDNGNNSENNNNNNNNNNDLLLMLMMMLLMMMLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLMLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL [...]
+"opendal":{"doc":"OpenDAL is the Open Data Access Layer to <strong>freely</strong> access …","t":"QNDNNDDDDINDNNNNNNNNNNNNNNDEDENNNNNNNNNNNNNNDNNDENNNNNNDDDNNNDNGNNSENNNNNNNNNNDLLLMLMMMLLMMMLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLMLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL [...]
 }');
 if (typeof window !== 'undefined' && window.initSearch) {window.initSearch(searchIndex)};
 if (typeof exports !== 'undefined') {exports.searchIndex = searchIndex};
diff --git a/docs/rust/source-files.js b/docs/rust/source-files.js
index 661a80ac..f6eeacfa 100644
--- a/docs/rust/source-files.js
+++ b/docs/rust/source-files.js
@@ -1,4 +1,4 @@
 var sourcesIndex = JSON.parse('{\
-"opendal":["",[["docs",[["comparisons",[],["mod.rs"]],["internals",[],["accessor.rs","layer.rs","mod.rs"]],["rfcs",[],["mod.rs"]]],["concepts.rs","mod.rs"]],["layers",[],["chaos.rs","complete.rs","concurrent_limit.rs","error_context.rs","immutable_index.rs","logging.rs","madsim.rs","metrics.rs","minitrace.rs","mod.rs","oteltrace.rs","prometheus.rs","retry.rs","tracing.rs","type_eraser.rs"]],["raw",[["adapters",[["kv",[],["api.rs","backend.rs","mod.rs"]],["typed_kv",[],["api.rs","backend. [...]
+"opendal":["",[["docs",[["comparisons",[],["mod.rs"]],["internals",[],["accessor.rs","layer.rs","mod.rs"]],["rfcs",[],["mod.rs"]]],["concepts.rs","mod.rs"]],["layers",[],["chaos.rs","complete.rs","concurrent_limit.rs","error_context.rs","immutable_index.rs","logging.rs","madsim.rs","metrics.rs","minitrace.rs","mod.rs","oteltrace.rs","prometheus.rs","retry.rs","tracing.rs","type_eraser.rs"]],["raw",[["adapters",[["kv",[],["api.rs","backend.rs","mod.rs"]],["typed_kv",[],["api.rs","backend. [...]
 }');
 createSourceSidebar();
diff --git a/docs/rust/src/opendal/layers/chaos.rs.html b/docs/rust/src/opendal/layers/chaos.rs.html
index b242e9c7..062d6741 100644
--- a/docs/rust/src/opendal/layers/chaos.rs.html
+++ b/docs/rust/src/opendal/layers/chaos.rs.html
@@ -230,7 +230,6 @@
 <a href="#230" id="230">230</a>
 <a href="#231" id="231">231</a>
 <a href="#232" id="232">232</a>
-<a href="#233" id="233">233</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -258,7 +257,6 @@
 <span class="kw">use </span>rand::prelude::<span class="kw-2">*</span>;
 <span class="kw">use </span>rand::rngs::StdRng;
 
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/layers/complete.rs.html b/docs/rust/src/opendal/layers/complete.rs.html
index 4726b18d..9283bfe7 100644
--- a/docs/rust/src/opendal/layers/complete.rs.html
+++ b/docs/rust/src/opendal/layers/complete.rs.html
@@ -701,7 +701,6 @@
 <a href="#701" id="701">701</a>
 <a href="#702" id="702">702</a>
 <a href="#703" id="703">703</a>
-<a href="#704" id="704">704</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -729,7 +728,6 @@
 <span class="kw">use </span>async_trait::async_trait;
 <span class="kw">use </span>bytes::Bytes;
 
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::oio::into_reader::RangeReader;
 <span class="kw">use </span><span class="kw">crate</span>::raw::oio::to_flat_pager;
 <span class="kw">use </span><span class="kw">crate</span>::raw::oio::to_hierarchy_pager;
diff --git a/docs/rust/src/opendal/layers/concurrent_limit.rs.html b/docs/rust/src/opendal/layers/concurrent_limit.rs.html
index 054e04b6..12ce7a0b 100644
--- a/docs/rust/src/opendal/layers/concurrent_limit.rs.html
+++ b/docs/rust/src/opendal/layers/concurrent_limit.rs.html
@@ -346,7 +346,6 @@
 <a href="#346" id="346">346</a>
 <a href="#347" id="347">347</a>
 <a href="#348" id="348">348</a>
-<a href="#349" id="349">349</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -375,7 +374,6 @@
 <span class="kw">use </span>tokio::sync::OwnedSemaphorePermit;
 <span class="kw">use </span>tokio::sync::Semaphore;
 
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/layers/error_context.rs.html b/docs/rust/src/opendal/layers/error_context.rs.html
index 606ff19a..397d3612 100644
--- a/docs/rust/src/opendal/layers/error_context.rs.html
+++ b/docs/rust/src/opendal/layers/error_context.rs.html
@@ -508,7 +508,6 @@
 <a href="#508" id="508">508</a>
 <a href="#509" id="509">509</a>
 <a href="#510" id="510">510</a>
-<a href="#511" id="511">511</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -536,7 +535,6 @@
 <span class="kw">use </span>bytes::Bytes;
 <span class="kw">use </span>futures::TryFutureExt;
 
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::oio::AppendOperation;
 <span class="kw">use </span><span class="kw">crate</span>::raw::oio::PageOperation;
 <span class="kw">use </span><span class="kw">crate</span>::raw::oio::ReadOperation;
diff --git a/docs/rust/src/opendal/layers/immutable_index.rs.html b/docs/rust/src/opendal/layers/immutable_index.rs.html
index 04ce1a25..6531c337 100644
--- a/docs/rust/src/opendal/layers/immutable_index.rs.html
+++ b/docs/rust/src/opendal/layers/immutable_index.rs.html
@@ -476,7 +476,6 @@
 <a href="#476" id="476">476</a>
 <a href="#477" id="477">477</a>
 <a href="#478" id="478">478</a>
-<a href="#479" id="479">479</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -500,7 +499,6 @@
 
 <span class="kw">use </span>async_trait::async_trait;
 
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/layers/logging.rs.html b/docs/rust/src/opendal/layers/logging.rs.html
index 667c415e..d58cccf5 100644
--- a/docs/rust/src/opendal/layers/logging.rs.html
+++ b/docs/rust/src/opendal/layers/logging.rs.html
@@ -1717,7 +1717,6 @@
 <a href="#1717" id="1717">1717</a>
 <a href="#1718" id="1718">1718</a>
 <a href="#1719" id="1719">1719</a>
-<a href="#1720" id="1720">1720</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -1749,7 +1748,6 @@
 <span class="kw">use </span>log::trace;
 <span class="kw">use </span>log::Level;
 
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::oio::ReadOperation;
 <span class="kw">use </span><span class="kw">crate</span>::raw::oio::WriteOperation;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
diff --git a/docs/rust/src/opendal/layers/madsim.rs.html b/docs/rust/src/opendal/layers/madsim.rs.html
index 63282534..7a19a27a 100644
--- a/docs/rust/src/opendal/layers/madsim.rs.html
+++ b/docs/rust/src/opendal/layers/madsim.rs.html
@@ -476,7 +476,6 @@
 <a href="#476" id="476">476</a>
 <a href="#477" id="477">477</a>
 <a href="#478" id="478">478</a>
-<a href="#479" id="479">479</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -518,7 +517,6 @@
 <span class="attr">#[cfg(madsim)]
 </span><span class="kw">use </span>madsim::net::Payload;
 
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::oio;
 <span class="kw">use </span><span class="kw">crate</span>::raw::oio::Entry;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
diff --git a/docs/rust/src/opendal/layers/metrics.rs.html b/docs/rust/src/opendal/layers/metrics.rs.html
index 21771296..15711a4b 100644
--- a/docs/rust/src/opendal/layers/metrics.rs.html
+++ b/docs/rust/src/opendal/layers/metrics.rs.html
@@ -898,7 +898,6 @@
 <a href="#898" id="898">898</a>
 <a href="#899" id="899">899</a>
 <a href="#900" id="900">900</a>
-<a href="#901" id="901">901</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -934,7 +933,6 @@
 <span class="kw">use </span>metrics::Counter;
 <span class="kw">use </span>metrics::Histogram;
 
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/layers/minitrace.rs.html b/docs/rust/src/opendal/layers/minitrace.rs.html
index 2f444ef0..7606d974 100644
--- a/docs/rust/src/opendal/layers/minitrace.rs.html
+++ b/docs/rust/src/opendal/layers/minitrace.rs.html
@@ -377,7 +377,6 @@
 <a href="#377" id="377">377</a>
 <a href="#378" id="378">378</a>
 <a href="#379" id="379">379</a>
-<a href="#380" id="380">380</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -405,7 +404,6 @@
 <span class="kw">use </span>futures::FutureExt;
 <span class="kw">use </span>minitrace::prelude::<span class="kw-2">*</span>;
 
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::oio::PageOperation;
 <span class="kw">use </span><span class="kw">crate</span>::raw::oio::ReadOperation;
 <span class="kw">use </span><span class="kw">crate</span>::raw::oio::WriteOperation;
diff --git a/docs/rust/src/opendal/layers/oteltrace.rs.html b/docs/rust/src/opendal/layers/oteltrace.rs.html
index 14151e21..c8683fd5 100644
--- a/docs/rust/src/opendal/layers/oteltrace.rs.html
+++ b/docs/rust/src/opendal/layers/oteltrace.rs.html
@@ -353,7 +353,6 @@
 <a href="#353" id="353">353</a>
 <a href="#354" id="354">354</a>
 <a href="#355" id="355">355</a>
-<a href="#356" id="356">356</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -386,7 +385,6 @@
 <span class="kw">use </span>opentelemetry::Context;
 <span class="kw">use </span>opentelemetry::KeyValue;
 
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/layers/prometheus.rs.html b/docs/rust/src/opendal/layers/prometheus.rs.html
index 91f439d5..4954cda3 100644
--- a/docs/rust/src/opendal/layers/prometheus.rs.html
+++ b/docs/rust/src/opendal/layers/prometheus.rs.html
@@ -723,7 +723,6 @@
 <a href="#723" id="723">723</a>
 <a href="#724" id="724">724</a>
 <a href="#725" id="725">725</a>
-<a href="#726" id="726">726</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -762,7 +761,6 @@
 <span class="kw">use </span>prometheus::HistogramVec;
 <span class="kw">use </span>prometheus::Registry;
 
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::Accessor;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
diff --git a/docs/rust/src/opendal/layers/retry.rs.html b/docs/rust/src/opendal/layers/retry.rs.html
index 5e4ec1a4..b759a3db 100644
--- a/docs/rust/src/opendal/layers/retry.rs.html
+++ b/docs/rust/src/opendal/layers/retry.rs.html
@@ -1109,7 +1109,6 @@
 <a href="#1109" id="1109">1109</a>
 <a href="#1110" id="1110">1110</a>
 <a href="#1111" id="1111">1111</a>
-<a href="#1112" id="1112">1112</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -1146,7 +1145,6 @@
 <span class="kw">use </span>futures::FutureExt;
 <span class="kw">use </span>log::warn;
 
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::oio::AppendOperation;
 <span class="kw">use </span><span class="kw">crate</span>::raw::oio::PageOperation;
 <span class="kw">use </span><span class="kw">crate</span>::raw::oio::ReadOperation;
diff --git a/docs/rust/src/opendal/layers/tracing.rs.html b/docs/rust/src/opendal/layers/tracing.rs.html
index 5ffbba01..d3b1e0ea 100644
--- a/docs/rust/src/opendal/layers/tracing.rs.html
+++ b/docs/rust/src/opendal/layers/tracing.rs.html
@@ -382,7 +382,6 @@
 <a href="#382" id="382">382</a>
 <a href="#383" id="383">383</a>
 <a href="#384" id="384">384</a>
-<a href="#385" id="385">385</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -410,7 +409,6 @@
 <span class="kw">use </span>futures::FutureExt;
 <span class="kw">use </span>tracing::Span;
 
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/layers/type_eraser.rs.html b/docs/rust/src/opendal/layers/type_eraser.rs.html
index 1bf47f5c..462d4e91 100644
--- a/docs/rust/src/opendal/layers/type_eraser.rs.html
+++ b/docs/rust/src/opendal/layers/type_eraser.rs.html
@@ -111,7 +111,6 @@
 <a href="#111" id="111">111</a>
 <a href="#112" id="112">112</a>
 <a href="#113" id="113">113</a>
-<a href="#114" id="114">114</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -134,7 +133,6 @@
 
 <span class="kw">use </span>async_trait::async_trait;
 
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/raw/accessor.rs.html b/docs/rust/src/opendal/raw/accessor.rs.html
index 08ed6112..531ab443 100644
--- a/docs/rust/src/opendal/raw/accessor.rs.html
+++ b/docs/rust/src/opendal/raw/accessor.rs.html
@@ -569,7 +569,6 @@
 <a href="#569" id="569">569</a>
 <a href="#570" id="570">570</a>
 <a href="#571" id="571">571</a>
-<a href="#572" id="572">572</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -592,7 +591,6 @@
 
 <span class="kw">use </span>async_trait::async_trait;
 
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/raw/adapters/kv/backend.rs.html b/docs/rust/src/opendal/raw/adapters/kv/backend.rs.html
index f1546e2c..efe0e73f 100644
--- a/docs/rust/src/opendal/raw/adapters/kv/backend.rs.html
+++ b/docs/rust/src/opendal/raw/adapters/kv/backend.rs.html
@@ -356,7 +356,6 @@
 <a href="#356" id="356">356</a>
 <a href="#357" id="357">357</a>
 <a href="#358" id="358">358</a>
-<a href="#359" id="359">359</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -380,7 +379,6 @@
 <span class="kw">use </span>bytes::Bytes;
 
 <span class="kw">use </span><span class="kw">super</span>::Adapter;
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/raw/adapters/typed_kv/backend.rs.html b/docs/rust/src/opendal/raw/adapters/typed_kv/backend.rs.html
index bc897abb..90ffbde0 100644
--- a/docs/rust/src/opendal/raw/adapters/typed_kv/backend.rs.html
+++ b/docs/rust/src/opendal/raw/adapters/typed_kv/backend.rs.html
@@ -363,7 +363,6 @@
 <a href="#363" id="363">363</a>
 <a href="#364" id="364">364</a>
 <a href="#365" id="365">365</a>
-<a href="#366" id="366">366</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -388,7 +387,6 @@
 
 <span class="kw">use </span><span class="kw">super</span>::Adapter;
 <span class="kw">use </span><span class="kw">super</span>::Value;
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::oio::VectorCursor;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
diff --git a/docs/rust/src/opendal/raw/layer.rs.html b/docs/rust/src/opendal/raw/layer.rs.html
index a247ea73..0d6930ac 100644
--- a/docs/rust/src/opendal/raw/layer.rs.html
+++ b/docs/rust/src/opendal/raw/layer.rs.html
@@ -372,8 +372,6 @@
 <a href="#372" id="372">372</a>
 <a href="#373" id="373">373</a>
 <a href="#374" id="374">374</a>
-<a href="#375" id="375">375</a>
-<a href="#376" id="376">376</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -395,7 +393,6 @@
 
 <span class="kw">use </span>async_trait::async_trait;
 
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
@@ -422,7 +419,6 @@
 /// use std::sync::Arc;
 ///
 /// use async_trait::async_trait;
-/// use opendal::ops::*;
 /// use opendal::raw::*;
 /// use opendal::*;
 ///
diff --git a/docs/rust/src/opendal/raw/mod.rs.html b/docs/rust/src/opendal/raw/mod.rs.html
index 14f38244..e4961a0a 100644
--- a/docs/rust/src/opendal/raw/mod.rs.html
+++ b/docs/rust/src/opendal/raw/mod.rs.html
@@ -67,6 +67,9 @@
 <a href="#67" id="67">67</a>
 <a href="#68" id="68">68</a>
 <a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -125,6 +128,9 @@
 <span class="kw">mod </span>rps;
 <span class="kw">pub use </span>rps::<span class="kw-2">*</span>;
 
+<span class="kw">mod </span>ops;
+<span class="kw">pub use </span>ops::<span class="kw-2">*</span>;
+
 <span class="kw">mod </span>http_util;
 <span class="kw">pub use </span>http_util::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/raw/oio/into_reader/by_range.rs.html b/docs/rust/src/opendal/raw/oio/into_reader/by_range.rs.html
index bc6c8f33..4546efa3 100644
--- a/docs/rust/src/opendal/raw/oio/into_reader/by_range.rs.html
+++ b/docs/rust/src/opendal/raw/oio/into_reader/by_range.rs.html
@@ -469,7 +469,6 @@
 <a href="#469" id="469">469</a>
 <a href="#470" id="470">470</a>
 <a href="#471" id="471">471</a>
-<a href="#472" id="472">472</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -499,7 +498,6 @@
 <span class="kw">use </span>futures::future::BoxFuture;
 <span class="kw">use </span>tokio::io::ReadBuf;
 
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/raw/oio/to_flat_pager.rs.html b/docs/rust/src/opendal/raw/oio/to_flat_pager.rs.html
index 55df68f1..5e9ce29a 100644
--- a/docs/rust/src/opendal/raw/oio/to_flat_pager.rs.html
+++ b/docs/rust/src/opendal/raw/oio/to_flat_pager.rs.html
@@ -315,7 +315,6 @@
 <a href="#315" id="315">315</a>
 <a href="#316" id="316">316</a>
 <a href="#317" id="317">317</a>
-<a href="#318" id="318">318</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -338,7 +337,6 @@
 
 <span class="kw">use </span>async_trait::async_trait;
 
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/types/ops.rs.html b/docs/rust/src/opendal/raw/ops.rs.html
similarity index 92%
rename from docs/rust/src/opendal/types/ops.rs.html
rename to docs/rust/src/opendal/raw/ops.rs.html
index 51f579b7..4571c9f7 100644
--- a/docs/rust/src/opendal/types/ops.rs.html
+++ b/docs/rust/src/opendal/raw/ops.rs.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `core/src/types/ops.rs`."><title>ops.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../.. [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `core/src/raw/ops.rs`."><title>ops.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../. [...]
 <a href="#2" id="2">2</a>
 <a href="#3" id="3">3</a>
 <a href="#4" id="4">4</a>
diff --git a/docs/rust/src/opendal/services/azblob/appender.rs.html b/docs/rust/src/opendal/services/azblob/appender.rs.html
index 69702a05..27b2079f 100644
--- a/docs/rust/src/opendal/services/azblob/appender.rs.html
+++ b/docs/rust/src/opendal/services/azblob/appender.rs.html
@@ -143,7 +143,6 @@
 <a href="#143" id="143">143</a>
 <a href="#144" id="144">144</a>
 <a href="#145" id="145">145</a>
-<a href="#146" id="146">146</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -169,7 +168,6 @@
 
 <span class="kw">use </span><span class="kw">super</span>::core::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">super</span>::error::parse_error;
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpAppend;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/azblob/backend.rs.html b/docs/rust/src/opendal/services/azblob/backend.rs.html
index 4f347cd8..9509db6f 100644
--- a/docs/rust/src/opendal/services/azblob/backend.rs.html
+++ b/docs/rust/src/opendal/services/azblob/backend.rs.html
@@ -802,8 +802,6 @@
 <a href="#802" id="802">802</a>
 <a href="#803" id="803">803</a>
 <a href="#804" id="804">804</a>
-<a href="#805" id="805">805</a>
-<a href="#806" id="806">806</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -839,7 +837,6 @@
 <span class="kw">use </span><span class="kw">super</span>::error::parse_error;
 <span class="kw">use </span><span class="kw">super</span>::pager::AzblobPager;
 <span class="kw">use </span><span class="kw">super</span>::writer::AzblobWriter;
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::services::azblob::core::AzblobCore;
 <span class="kw">use </span><span class="kw">crate</span>::types::Metadata;
@@ -858,7 +855,6 @@
 <span class="kw">const </span>AZBLOB_BATCH_LIMIT: usize = <span class="number">256</span>;
 
 <span class="doccomment">/// Azure Storage Blob services support.
-///
 </span><span class="attr">#[doc = <span class="macro">include_str!</span>(<span class="string">&quot;docs.md&quot;</span>)]
 #[derive(Default, Clone)]
 </span><span class="kw">pub struct </span>AzblobBuilder {
diff --git a/docs/rust/src/opendal/services/azblob/writer.rs.html b/docs/rust/src/opendal/services/azblob/writer.rs.html
index 3b4cca1a..2db3841e 100644
--- a/docs/rust/src/opendal/services/azblob/writer.rs.html
+++ b/docs/rust/src/opendal/services/azblob/writer.rs.html
@@ -73,7 +73,6 @@
 <a href="#73" id="73">73</a>
 <a href="#74" id="74">74</a>
 <a href="#75" id="75">75</a>
-<a href="#76" id="76">76</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -99,7 +98,6 @@
 
 <span class="kw">use </span><span class="kw">super</span>::core::AzblobCore;
 <span class="kw">use </span><span class="kw">super</span>::error::parse_error;
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpWrite;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/azdfs/backend.rs.html b/docs/rust/src/opendal/services/azdfs/backend.rs.html
index 259abe52..82466c97 100644
--- a/docs/rust/src/opendal/services/azdfs/backend.rs.html
+++ b/docs/rust/src/opendal/services/azdfs/backend.rs.html
@@ -457,7 +457,6 @@
 <a href="#457" id="457">457</a>
 <a href="#458" id="458">458</a>
 <a href="#459" id="459">459</a>
-<a href="#460" id="460">460</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -491,7 +490,6 @@
 <span class="kw">use </span><span class="kw">super</span>::error::parse_error;
 <span class="kw">use </span><span class="kw">super</span>::pager::AzdfsPager;
 <span class="kw">use </span><span class="kw">super</span>::writer::AzdfsWriter;
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/azdfs/writer.rs.html b/docs/rust/src/opendal/services/azdfs/writer.rs.html
index afd07868..23170cfa 100644
--- a/docs/rust/src/opendal/services/azdfs/writer.rs.html
+++ b/docs/rust/src/opendal/services/azdfs/writer.rs.html
@@ -94,7 +94,6 @@
 <a href="#94" id="94">94</a>
 <a href="#95" id="95">95</a>
 <a href="#96" id="96">96</a>
-<a href="#97" id="97">97</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -120,7 +119,6 @@
 
 <span class="kw">use </span><span class="kw">super</span>::core::AzdfsCore;
 <span class="kw">use </span><span class="kw">super</span>::error::parse_error;
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpWrite;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/cos/backend.rs.html b/docs/rust/src/opendal/services/cos/backend.rs.html
index 0076c18a..75a5df33 100644
--- a/docs/rust/src/opendal/services/cos/backend.rs.html
+++ b/docs/rust/src/opendal/services/cos/backend.rs.html
@@ -484,7 +484,6 @@
 <a href="#484" id="484">484</a>
 <a href="#485" id="485">485</a>
 <a href="#486" id="486">486</a>
-<a href="#487" id="487">487</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -518,7 +517,6 @@
 <span class="kw">use </span><span class="kw">super</span>::error::parse_error;
 <span class="kw">use </span><span class="kw">super</span>::pager::CosPager;
 <span class="kw">use </span><span class="kw">super</span>::writer::CosWriter;
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/cos/writer.rs.html b/docs/rust/src/opendal/services/cos/writer.rs.html
index 1fb2ec86..86ac1084 100644
--- a/docs/rust/src/opendal/services/cos/writer.rs.html
+++ b/docs/rust/src/opendal/services/cos/writer.rs.html
@@ -73,7 +73,6 @@
 <a href="#73" id="73">73</a>
 <a href="#74" id="74">74</a>
 <a href="#75" id="75">75</a>
-<a href="#76" id="76">76</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -99,7 +98,6 @@
 
 <span class="kw">use </span><span class="kw">super</span>::core::CosCore;
 <span class="kw">use </span><span class="kw">super</span>::error::parse_error;
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpWrite;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/fs/appender.rs.html b/docs/rust/src/opendal/services/fs/appender.rs.html
index 88a23e69..58421c5d 100644
--- a/docs/rust/src/opendal/services/fs/appender.rs.html
+++ b/docs/rust/src/opendal/services/fs/appender.rs.html
@@ -47,7 +47,6 @@
 <a href="#47" id="47">47</a>
 <a href="#48" id="48">48</a>
 <a href="#49" id="49">49</a>
-<a href="#50" id="50">50</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -67,7 +66,6 @@
 
 </span><span class="kw">use </span>async_trait::async_trait;
 <span class="kw">use </span>bytes::Bytes;
-
 <span class="kw">use </span>tokio::io::AsyncWriteExt;
 
 <span class="kw">use </span><span class="kw">super</span>::error::parse_io_error;
diff --git a/docs/rust/src/opendal/services/fs/backend.rs.html b/docs/rust/src/opendal/services/fs/backend.rs.html
index 5e28c5a4..c8e8b9c3 100644
--- a/docs/rust/src/opendal/services/fs/backend.rs.html
+++ b/docs/rust/src/opendal/services/fs/backend.rs.html
@@ -751,7 +751,6 @@
 <a href="#751" id="751">751</a>
 <a href="#752" id="752">752</a>
 <a href="#753" id="753">753</a>
-<a href="#754" id="754">754</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -785,7 +784,6 @@
 <span class="kw">use </span><span class="kw">super</span>::error::parse_io_error;
 <span class="kw">use </span><span class="kw">super</span>::pager::FsPager;
 <span class="kw">use </span><span class="kw">super</span>::writer::FsWriter;
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/ftp/backend.rs.html b/docs/rust/src/opendal/services/ftp/backend.rs.html
index 19fb6106..08f30a43 100644
--- a/docs/rust/src/opendal/services/ftp/backend.rs.html
+++ b/docs/rust/src/opendal/services/ftp/backend.rs.html
@@ -579,7 +579,6 @@
 <a href="#579" id="579">579</a>
 <a href="#580" id="580">580</a>
 <a href="#581" id="581">581</a>
-<a href="#582" id="582">582</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -623,7 +622,6 @@
 <span class="kw">use </span><span class="kw">super</span>::pager::FtpPager;
 <span class="kw">use </span><span class="kw">super</span>::util::FtpReader;
 <span class="kw">use </span><span class="kw">super</span>::writer::FtpWriter;
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/gcs/backend.rs.html b/docs/rust/src/opendal/services/gcs/backend.rs.html
index 4edf9f3a..f4401169 100644
--- a/docs/rust/src/opendal/services/gcs/backend.rs.html
+++ b/docs/rust/src/opendal/services/gcs/backend.rs.html
@@ -658,7 +658,6 @@
 <a href="#658" id="658">658</a>
 <a href="#659" id="659">659</a>
 <a href="#660" id="660">660</a>
-<a href="#661" id="661">661</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -696,7 +695,6 @@
 <span class="kw">use </span><span class="kw">super</span>::error::parse_error;
 <span class="kw">use </span><span class="kw">super</span>::pager::GcsPager;
 <span class="kw">use </span><span class="kw">super</span>::writer::GcsWriter;
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/gcs/writer.rs.html b/docs/rust/src/opendal/services/gcs/writer.rs.html
index 355a548c..64075feb 100644
--- a/docs/rust/src/opendal/services/gcs/writer.rs.html
+++ b/docs/rust/src/opendal/services/gcs/writer.rs.html
@@ -211,7 +211,6 @@
 <a href="#211" id="211">211</a>
 <a href="#212" id="212">212</a>
 <a href="#213" id="213">213</a>
-<a href="#214" id="214">214</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -237,7 +236,6 @@
 
 <span class="kw">use </span><span class="kw">super</span>::core::GcsCore;
 <span class="kw">use </span><span class="kw">super</span>::error::parse_error;
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpWrite;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/gdrive/backend.rs.html b/docs/rust/src/opendal/services/gdrive/backend.rs.html
index f4df933f..377780ad 100644
--- a/docs/rust/src/opendal/services/gdrive/backend.rs.html
+++ b/docs/rust/src/opendal/services/gdrive/backend.rs.html
@@ -111,16 +111,6 @@
 <a href="#111" id="111">111</a>
 <a href="#112" id="112">112</a>
 <a href="#113" id="113">113</a>
-<a href="#114" id="114">114</a>
-<a href="#115" id="115">115</a>
-<a href="#116" id="116">116</a>
-<a href="#117" id="117">117</a>
-<a href="#118" id="118">118</a>
-<a href="#119" id="119">119</a>
-<a href="#120" id="120">120</a>
-<a href="#121" id="121">121</a>
-<a href="#122" id="122">122</a>
-<a href="#123" id="123">123</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -147,17 +137,7 @@
 <span class="kw">use </span><span class="kw">super</span>::core::GdriveCore;
 <span class="kw">use </span><span class="kw">super</span>::error::parse_error;
 <span class="kw">use </span><span class="kw">super</span>::writer::GdriveWriter;
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpDelete;
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpRead;
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpWrite;
-<span class="kw">use </span><span class="kw">crate</span>::raw::parse_into_metadata;
-<span class="kw">use </span><span class="kw">crate</span>::raw::Accessor;
-<span class="kw">use </span><span class="kw">crate</span>::raw::AccessorInfo;
-<span class="kw">use </span><span class="kw">crate</span>::raw::HttpClient;
-<span class="kw">use </span><span class="kw">crate</span>::raw::IncomingAsyncBody;
-<span class="kw">use </span><span class="kw">crate</span>::raw::RpDelete;
-<span class="kw">use </span><span class="kw">crate</span>::raw::RpRead;
-<span class="kw">use </span><span class="kw">crate</span>::raw::RpWrite;
+<span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::types::Result;
 <span class="kw">use </span><span class="kw">crate</span>::Capability;
 <span class="kw">use </span><span class="kw">crate</span>::Error;
diff --git a/docs/rust/src/opendal/services/gdrive/writer.rs.html b/docs/rust/src/opendal/services/gdrive/writer.rs.html
index d83356f5..8922da82 100644
--- a/docs/rust/src/opendal/services/gdrive/writer.rs.html
+++ b/docs/rust/src/opendal/services/gdrive/writer.rs.html
@@ -70,7 +70,6 @@
 <a href="#70" id="70">70</a>
 <a href="#71" id="71">71</a>
 <a href="#72" id="72">72</a>
-<a href="#73" id="73">73</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -96,7 +95,6 @@
 
 <span class="kw">use </span><span class="kw">super</span>::core::GdriveCore;
 <span class="kw">use </span><span class="kw">super</span>::error::parse_error;
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpWrite;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/ghac/backend.rs.html b/docs/rust/src/opendal/services/ghac/backend.rs.html
index 00967c5f..70db1420 100644
--- a/docs/rust/src/opendal/services/ghac/backend.rs.html
+++ b/docs/rust/src/opendal/services/ghac/backend.rs.html
@@ -659,7 +659,6 @@
 <a href="#659" id="659">659</a>
 <a href="#660" id="660">660</a>
 <a href="#661" id="661">661</a>
-<a href="#662" id="662">662</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -697,7 +696,6 @@
 
 <span class="kw">use </span><span class="kw">super</span>::error::parse_error;
 <span class="kw">use </span><span class="kw">super</span>::writer::GhacWriter;
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/hdfs/backend.rs.html b/docs/rust/src/opendal/services/hdfs/backend.rs.html
index 4d039661..a345d107 100644
--- a/docs/rust/src/opendal/services/hdfs/backend.rs.html
+++ b/docs/rust/src/opendal/services/hdfs/backend.rs.html
@@ -538,7 +538,6 @@
 <a href="#538" id="538">538</a>
 <a href="#539" id="539">539</a>
 <a href="#540" id="540">540</a>
-<a href="#541" id="541">541</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -570,7 +569,6 @@
 <span class="kw">use </span><span class="kw">super</span>::error::parse_io_error;
 <span class="kw">use </span><span class="kw">super</span>::pager::HdfsPager;
 <span class="kw">use </span><span class="kw">super</span>::writer::HdfsWriter;
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/http/backend.rs.html b/docs/rust/src/opendal/services/http/backend.rs.html
index 0d2efd07..07b2774d 100644
--- a/docs/rust/src/opendal/services/http/backend.rs.html
+++ b/docs/rust/src/opendal/services/http/backend.rs.html
@@ -562,7 +562,6 @@
 <a href="#562" id="562">562</a>
 <a href="#563" id="563">563</a>
 <a href="#564" id="564">564</a>
-<a href="#565" id="565">565</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -594,7 +593,6 @@
 <span class="kw">use </span>log::debug;
 
 <span class="kw">use </span><span class="kw">super</span>::error::parse_error;
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/ipfs/backend.rs.html b/docs/rust/src/opendal/services/ipfs/backend.rs.html
index e2567207..bc9084b9 100644
--- a/docs/rust/src/opendal/services/ipfs/backend.rs.html
+++ b/docs/rust/src/opendal/services/ipfs/backend.rs.html
@@ -527,7 +527,6 @@
 <a href="#527" id="527">527</a>
 <a href="#528" id="528">528</a>
 <a href="#529" id="529">529</a>
-<a href="#530" id="530">530</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -559,7 +558,6 @@
 
 <span class="kw">use </span><span class="kw">super</span>::error::parse_error;
 <span class="kw">use </span><span class="kw">super</span>::ipld::PBNode;
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/ipmfs/backend.rs.html b/docs/rust/src/opendal/services/ipmfs/backend.rs.html
index c286d0df..44437595 100644
--- a/docs/rust/src/opendal/services/ipmfs/backend.rs.html
+++ b/docs/rust/src/opendal/services/ipmfs/backend.rs.html
@@ -333,7 +333,6 @@
 <a href="#333" id="333">333</a>
 <a href="#334" id="334">334</a>
 <a href="#335" id="335">335</a>
-<a href="#336" id="336">336</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -366,7 +365,6 @@
 <span class="kw">use </span><span class="kw">super</span>::error::parse_error;
 <span class="kw">use </span><span class="kw">super</span>::pager::IpmfsPager;
 <span class="kw">use </span><span class="kw">super</span>::writer::IpmfsWriter;
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/obs/backend.rs.html b/docs/rust/src/opendal/services/obs/backend.rs.html
index 0a513c81..b5465b09 100644
--- a/docs/rust/src/opendal/services/obs/backend.rs.html
+++ b/docs/rust/src/opendal/services/obs/backend.rs.html
@@ -483,7 +483,6 @@
 <a href="#483" id="483">483</a>
 <a href="#484" id="484">484</a>
 <a href="#485" id="485">485</a>
-<a href="#486" id="486">486</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -517,7 +516,6 @@
 <span class="kw">use </span><span class="kw">super</span>::error::parse_error;
 <span class="kw">use </span><span class="kw">super</span>::pager::ObsPager;
 <span class="kw">use </span><span class="kw">super</span>::writer::ObsWriter;
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/obs/writer.rs.html b/docs/rust/src/opendal/services/obs/writer.rs.html
index 3cc1d18d..7d30d08f 100644
--- a/docs/rust/src/opendal/services/obs/writer.rs.html
+++ b/docs/rust/src/opendal/services/obs/writer.rs.html
@@ -73,7 +73,6 @@
 <a href="#73" id="73">73</a>
 <a href="#74" id="74">74</a>
 <a href="#75" id="75">75</a>
-<a href="#76" id="76">76</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -99,7 +98,6 @@
 
 <span class="kw">use </span><span class="kw">super</span>::core::ObsCore;
 <span class="kw">use </span><span class="kw">super</span>::error::parse_error;
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpWrite;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/onedrive/backend.rs.html b/docs/rust/src/opendal/services/onedrive/backend.rs.html
index fdaebf24..33bbafe6 100644
--- a/docs/rust/src/opendal/services/onedrive/backend.rs.html
+++ b/docs/rust/src/opendal/services/onedrive/backend.rs.html
@@ -407,38 +407,6 @@
 <a href="#407" id="407">407</a>
 <a href="#408" id="408">408</a>
 <a href="#409" id="409">409</a>
-<a href="#410" id="410">410</a>
-<a href="#411" id="411">411</a>
-<a href="#412" id="412">412</a>
-<a href="#413" id="413">413</a>
-<a href="#414" id="414">414</a>
-<a href="#415" id="415">415</a>
-<a href="#416" id="416">416</a>
-<a href="#417" id="417">417</a>
-<a href="#418" id="418">418</a>
-<a href="#419" id="419">419</a>
-<a href="#420" id="420">420</a>
-<a href="#421" id="421">421</a>
-<a href="#422" id="422">422</a>
-<a href="#423" id="423">423</a>
-<a href="#424" id="424">424</a>
-<a href="#425" id="425">425</a>
-<a href="#426" id="426">426</a>
-<a href="#427" id="427">427</a>
-<a href="#428" id="428">428</a>
-<a href="#429" id="429">429</a>
-<a href="#430" id="430">430</a>
-<a href="#431" id="431">431</a>
-<a href="#432" id="432">432</a>
-<a href="#433" id="433">433</a>
-<a href="#434" id="434">434</a>
-<a href="#435" id="435">435</a>
-<a href="#436" id="436">436</a>
-<a href="#437" id="437">437</a>
-<a href="#438" id="438">438</a>
-<a href="#439" id="439">439</a>
-<a href="#440" id="440">440</a>
-<a href="#441" id="441">441</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -472,40 +440,8 @@
 <span class="kw">use </span><span class="kw">super</span>::graph_model::OnedriveGetItemBody;
 <span class="kw">use </span><span class="kw">super</span>::pager::OnedrivePager;
 <span class="kw">use </span><span class="kw">super</span>::writer::OneDriveWriter;
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpCreateDir;
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpDelete;
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpList;
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpRead;
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpStat;
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpWrite;
-<span class="kw">use </span><span class="kw">crate</span>::raw::build_abs_path;
-<span class="kw">use </span><span class="kw">crate</span>::raw::build_rooted_abs_path;
-<span class="kw">use </span><span class="kw">crate</span>::raw::get_basename;
-<span class="kw">use </span><span class="kw">crate</span>::raw::get_parent;
-<span class="kw">use </span><span class="kw">crate</span>::raw::new_json_deserialize_error;
-<span class="kw">use </span><span class="kw">crate</span>::raw::new_json_serialize_error;
-<span class="kw">use </span><span class="kw">crate</span>::raw::new_request_build_error;
-<span class="kw">use </span><span class="kw">crate</span>::raw::parse_datetime_from_rfc3339;
-<span class="kw">use </span><span class="kw">crate</span>::raw::parse_into_metadata;
-<span class="kw">use </span><span class="kw">crate</span>::raw::parse_location;
-<span class="kw">use </span><span class="kw">crate</span>::raw::percent_encode_path;
-<span class="kw">use </span><span class="kw">crate</span>::raw::Accessor;
-<span class="kw">use </span><span class="kw">crate</span>::raw::AccessorInfo;
-<span class="kw">use </span><span class="kw">crate</span>::raw::AsyncBody;
-<span class="kw">use </span><span class="kw">crate</span>::raw::HttpClient;
-<span class="kw">use </span><span class="kw">crate</span>::raw::IncomingAsyncBody;
-<span class="kw">use </span><span class="kw">crate</span>::raw::RpCreateDir;
-<span class="kw">use </span><span class="kw">crate</span>::raw::RpDelete;
-<span class="kw">use </span><span class="kw">crate</span>::raw::RpList;
-<span class="kw">use </span><span class="kw">crate</span>::raw::RpRead;
-<span class="kw">use </span><span class="kw">crate</span>::raw::RpStat;
-<span class="kw">use </span><span class="kw">crate</span>::raw::RpWrite;
-<span class="kw">use </span><span class="kw">crate</span>::types::Result;
-<span class="kw">use </span><span class="kw">crate</span>::Capability;
-<span class="kw">use </span><span class="kw">crate</span>::EntryMode;
-<span class="kw">use </span><span class="kw">crate</span>::Error;
-<span class="kw">use </span><span class="kw">crate</span>::ErrorKind;
-<span class="kw">use </span><span class="kw">crate</span>::Metadata;
+<span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
+<span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
 <span class="attr">#[derive(Clone)]
 </span><span class="kw">pub struct </span>OnedriveBackend {
diff --git a/docs/rust/src/opendal/services/onedrive/writer.rs.html b/docs/rust/src/opendal/services/onedrive/writer.rs.html
index b8ea7ddf..8f26fd7c 100644
--- a/docs/rust/src/opendal/services/onedrive/writer.rs.html
+++ b/docs/rust/src/opendal/services/onedrive/writer.rs.html
@@ -172,7 +172,6 @@
 <a href="#172" id="172">172</a>
 <a href="#173" id="173">173</a>
 <a href="#174" id="174">174</a>
-<a href="#175" id="175">175</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -199,7 +198,6 @@
 <span class="kw">use </span><span class="kw">super</span>::error::parse_error;
 <span class="kw">use </span><span class="kw">super</span>::graph_model::OneDriveUploadSessionCreationRequestBody;
 <span class="kw">use </span><span class="kw">super</span>::graph_model::OneDriveUploadSessionCreationResponseBody;
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpWrite;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/oss/appender.rs.html b/docs/rust/src/opendal/services/oss/appender.rs.html
index ccfa8b4f..13b8ef28 100644
--- a/docs/rust/src/opendal/services/oss/appender.rs.html
+++ b/docs/rust/src/opendal/services/oss/appender.rs.html
@@ -140,7 +140,6 @@
 <a href="#140" id="140">140</a>
 <a href="#141" id="141">141</a>
 <a href="#142" id="142">142</a>
-<a href="#143" id="143">143</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -166,7 +165,6 @@
 
 <span class="kw">use </span><span class="kw">super</span>::core::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">super</span>::error::parse_error;
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpAppend;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/oss/backend.rs.html b/docs/rust/src/opendal/services/oss/backend.rs.html
index b8ff3aa5..9e62da7d 100644
--- a/docs/rust/src/opendal/services/oss/backend.rs.html
+++ b/docs/rust/src/opendal/services/oss/backend.rs.html
@@ -696,7 +696,6 @@
 <a href="#696" id="696">696</a>
 <a href="#697" id="697">697</a>
 <a href="#698" id="698">698</a>
-<a href="#699" id="699">699</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -734,7 +733,6 @@
 <span class="kw">use </span><span class="kw">super</span>::error::parse_error;
 <span class="kw">use </span><span class="kw">super</span>::pager::OssPager;
 <span class="kw">use </span><span class="kw">super</span>::writer::OssWriter;
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/oss/core.rs.html b/docs/rust/src/opendal/services/oss/core.rs.html
index 45c89820..9f5466d3 100644
--- a/docs/rust/src/opendal/services/oss/core.rs.html
+++ b/docs/rust/src/opendal/services/oss/core.rs.html
@@ -826,8 +826,6 @@
 <a href="#826" id="826">826</a>
 <a href="#827" id="827">827</a>
 <a href="#828" id="828">828</a>
-<a href="#829" id="829">829</a>
-<a href="#830" id="830">830</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -867,8 +865,6 @@
 <span class="kw">use </span>serde::Deserialize;
 <span class="kw">use </span>serde::Serialize;
 
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpAppend;
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpWrite;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/oss/writer.rs.html b/docs/rust/src/opendal/services/oss/writer.rs.html
index ff66dbfb..196083d2 100644
--- a/docs/rust/src/opendal/services/oss/writer.rs.html
+++ b/docs/rust/src/opendal/services/oss/writer.rs.html
@@ -218,7 +218,6 @@
 <a href="#218" id="218">218</a>
 <a href="#219" id="219">219</a>
 <a href="#220" id="220">220</a>
-<a href="#221" id="221">221</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -245,7 +244,6 @@
 
 <span class="kw">use </span><span class="kw">super</span>::core::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">super</span>::error::parse_error;
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpWrite;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/s3/backend.rs.html b/docs/rust/src/opendal/services/s3/backend.rs.html
index 75cb59ff..2d5b641a 100644
--- a/docs/rust/src/opendal/services/s3/backend.rs.html
+++ b/docs/rust/src/opendal/services/s3/backend.rs.html
@@ -1257,7 +1257,6 @@
 <a href="#1257" id="1257">1257</a>
 <a href="#1258" id="1258">1258</a>
 <a href="#1259" id="1259">1259</a>
-<a href="#1260" id="1260">1260</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -1300,7 +1299,6 @@
 <span class="kw">use </span><span class="kw">super</span>::error::parse_s3_error_code;
 <span class="kw">use </span><span class="kw">super</span>::pager::S3Pager;
 <span class="kw">use </span><span class="kw">super</span>::writer::S3Writer;
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/s3/writer.rs.html b/docs/rust/src/opendal/services/s3/writer.rs.html
index 08eacefc..5970f861 100644
--- a/docs/rust/src/opendal/services/s3/writer.rs.html
+++ b/docs/rust/src/opendal/services/s3/writer.rs.html
@@ -252,7 +252,6 @@
 <a href="#252" id="252">252</a>
 <a href="#253" id="253">253</a>
 <a href="#254" id="254">254</a>
-<a href="#255" id="255">255</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -279,7 +278,6 @@
 
 <span class="kw">use </span><span class="kw">super</span>::core::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">super</span>::error::parse_error;
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpWrite;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/sftp/backend.rs.html b/docs/rust/src/opendal/services/sftp/backend.rs.html
index 3db4b238..3bca79da 100644
--- a/docs/rust/src/opendal/services/sftp/backend.rs.html
+++ b/docs/rust/src/opendal/services/sftp/backend.rs.html
@@ -607,7 +607,6 @@
 <a href="#607" id="607">607</a>
 <a href="#608" id="608">608</a>
 <a href="#609" id="609">609</a>
-<a href="#610" id="610">610</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -646,7 +645,6 @@
 <span class="kw">use </span><span class="kw">super</span>::pager::SftpPager;
 <span class="kw">use </span><span class="kw">super</span>::utils::SftpReader;
 <span class="kw">use </span><span class="kw">super</span>::writer::SftpWriter;
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/supabase/backend.rs.html b/docs/rust/src/opendal/services/supabase/backend.rs.html
index 6c3563ef..6cbf0f83 100644
--- a/docs/rust/src/opendal/services/supabase/backend.rs.html
+++ b/docs/rust/src/opendal/services/supabase/backend.rs.html
@@ -327,7 +327,6 @@
 <a href="#327" id="327">327</a>
 <a href="#328" id="328">328</a>
 <a href="#329" id="329">329</a>
-<a href="#330" id="330">330</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -355,7 +354,6 @@
 <span class="kw">use </span><span class="kw">super</span>::core::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">super</span>::error::parse_error;
 <span class="kw">use </span><span class="kw">super</span>::writer::<span class="kw-2">*</span>;
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/supabase/writer.rs.html b/docs/rust/src/opendal/services/supabase/writer.rs.html
index 1c7e2ec6..9e7e3897 100644
--- a/docs/rust/src/opendal/services/supabase/writer.rs.html
+++ b/docs/rust/src/opendal/services/supabase/writer.rs.html
@@ -86,7 +86,6 @@
 <a href="#86" id="86">86</a>
 <a href="#87" id="87">87</a>
 <a href="#88" id="88">88</a>
-<a href="#89" id="89">89</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -112,7 +111,6 @@
 
 <span class="kw">use </span><span class="kw">super</span>::core::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">super</span>::error::parse_error;
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpWrite;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/vercel_artifacts/backend.rs.html b/docs/rust/src/opendal/services/vercel_artifacts/backend.rs.html
index b8352d9f..d5974195 100644
--- a/docs/rust/src/opendal/services/vercel_artifacts/backend.rs.html
+++ b/docs/rust/src/opendal/services/vercel_artifacts/backend.rs.html
@@ -142,19 +142,6 @@
 <a href="#142" id="142">142</a>
 <a href="#143" id="143">143</a>
 <a href="#144" id="144">144</a>
-<a href="#145" id="145">145</a>
-<a href="#146" id="146">146</a>
-<a href="#147" id="147">147</a>
-<a href="#148" id="148">148</a>
-<a href="#149" id="149">149</a>
-<a href="#150" id="150">150</a>
-<a href="#151" id="151">151</a>
-<a href="#152" id="152">152</a>
-<a href="#153" id="153">153</a>
-<a href="#154" id="154">154</a>
-<a href="#155" id="155">155</a>
-<a href="#156" id="156">156</a>
-<a href="#157" id="157">157</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -182,21 +169,8 @@
 
 <span class="kw">use </span><span class="kw">super</span>::error::parse_error;
 <span class="kw">use </span><span class="kw">super</span>::writer::VercelArtifactsWriter;
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpRead;
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpWrite;
-<span class="kw">use </span><span class="kw">crate</span>::raw::new_request_build_error;
-<span class="kw">use </span><span class="kw">crate</span>::raw::parse_into_metadata;
-<span class="kw">use </span><span class="kw">crate</span>::raw::Accessor;
-<span class="kw">use </span><span class="kw">crate</span>::raw::AccessorInfo;
-<span class="kw">use </span><span class="kw">crate</span>::raw::AsyncBody;
-<span class="kw">use </span><span class="kw">crate</span>::raw::HttpClient;
-<span class="kw">use </span><span class="kw">crate</span>::raw::IncomingAsyncBody;
-<span class="kw">use </span><span class="kw">crate</span>::raw::RpRead;
-<span class="kw">use </span><span class="kw">crate</span>::raw::RpWrite;
-<span class="kw">use </span><span class="kw">crate</span>::types::Result;
-<span class="kw">use </span><span class="kw">crate</span>::Capability;
-<span class="kw">use </span><span class="kw">crate</span>::Error;
-<span class="kw">use </span><span class="kw">crate</span>::ErrorKind;
+<span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
+<span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
 <span class="attr">#[derive(Clone)]
 </span><span class="kw">pub struct </span>VercelArtifactsBackend {
diff --git a/docs/rust/src/opendal/services/vercel_artifacts/writer.rs.html b/docs/rust/src/opendal/services/vercel_artifacts/writer.rs.html
index 76eea86a..2f5df146 100644
--- a/docs/rust/src/opendal/services/vercel_artifacts/writer.rs.html
+++ b/docs/rust/src/opendal/services/vercel_artifacts/writer.rs.html
@@ -68,7 +68,6 @@
 <a href="#68" id="68">68</a>
 <a href="#69" id="69">69</a>
 <a href="#70" id="70">70</a>
-<a href="#71" id="71">71</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -92,7 +91,6 @@
 
 <span class="kw">use </span><span class="kw">super</span>::backend::VercelArtifactsBackend;
 <span class="kw">use </span><span class="kw">super</span>::error::parse_error;
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpWrite;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/wasabi/backend.rs.html b/docs/rust/src/opendal/services/wasabi/backend.rs.html
index 71c4f7a8..0d1d3098 100644
--- a/docs/rust/src/opendal/services/wasabi/backend.rs.html
+++ b/docs/rust/src/opendal/services/wasabi/backend.rs.html
@@ -1187,7 +1187,6 @@
 <a href="#1187" id="1187">1187</a>
 <a href="#1188" id="1188">1188</a>
 <a href="#1189" id="1189">1189</a>
-<a href="#1190" id="1190">1190</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -1229,7 +1228,6 @@
 <span class="kw">use </span><span class="kw">super</span>::error::parse_error;
 <span class="kw">use </span><span class="kw">super</span>::pager::WasabiPager;
 <span class="kw">use </span><span class="kw">super</span>::writer::WasabiWriter;
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/wasabi/core.rs.html b/docs/rust/src/opendal/services/wasabi/core.rs.html
index 001a0af6..5819a31d 100644
--- a/docs/rust/src/opendal/services/wasabi/core.rs.html
+++ b/docs/rust/src/opendal/services/wasabi/core.rs.html
@@ -929,7 +929,6 @@
 <a href="#929" id="929">929</a>
 <a href="#930" id="930">930</a>
 <a href="#931" id="931">931</a>
-<a href="#932" id="932">932</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -968,7 +967,6 @@
 <span class="kw">use </span>serde::Deserialize;
 <span class="kw">use </span>serde::Serialize;
 
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpStat;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/wasabi/writer.rs.html b/docs/rust/src/opendal/services/wasabi/writer.rs.html
index aaa9bb42..443790f8 100644
--- a/docs/rust/src/opendal/services/wasabi/writer.rs.html
+++ b/docs/rust/src/opendal/services/wasabi/writer.rs.html
@@ -71,7 +71,6 @@
 <a href="#71" id="71">71</a>
 <a href="#72" id="72">72</a>
 <a href="#73" id="73">73</a>
-<a href="#74" id="74">74</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -97,7 +96,6 @@
 
 <span class="kw">use </span><span class="kw">super</span>::core::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">super</span>::error::parse_error;
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpWrite;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/webdav/backend.rs.html b/docs/rust/src/opendal/services/webdav/backend.rs.html
index e1d31b17..ed6031ad 100644
--- a/docs/rust/src/opendal/services/webdav/backend.rs.html
+++ b/docs/rust/src/opendal/services/webdav/backend.rs.html
@@ -689,7 +689,6 @@
 <a href="#689" id="689">689</a>
 <a href="#690" id="690">690</a>
 <a href="#691" id="691">691</a>
-<a href="#692" id="692">692</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -724,7 +723,6 @@
 <span class="kw">use </span><span class="kw">super</span>::list_response::Multistatus;
 <span class="kw">use </span><span class="kw">super</span>::pager::WebdavPager;
 <span class="kw">use </span><span class="kw">super</span>::writer::WebdavWriter;
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/webdav/writer.rs.html b/docs/rust/src/opendal/services/webdav/writer.rs.html
index f3bb8186..70c0c3be 100644
--- a/docs/rust/src/opendal/services/webdav/writer.rs.html
+++ b/docs/rust/src/opendal/services/webdav/writer.rs.html
@@ -70,7 +70,6 @@
 <a href="#70" id="70">70</a>
 <a href="#71" id="71">71</a>
 <a href="#72" id="72">72</a>
-<a href="#73" id="73">73</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -94,7 +93,6 @@
 
 <span class="kw">use </span><span class="kw">super</span>::backend::WebdavBackend;
 <span class="kw">use </span><span class="kw">super</span>::error::parse_error;
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpWrite;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/webhdfs/backend.rs.html b/docs/rust/src/opendal/services/webhdfs/backend.rs.html
index 20061691..afa0216d 100644
--- a/docs/rust/src/opendal/services/webhdfs/backend.rs.html
+++ b/docs/rust/src/opendal/services/webhdfs/backend.rs.html
@@ -624,7 +624,6 @@
 <a href="#624" id="624">624</a>
 <a href="#625" id="625">625</a>
 <a href="#626" id="626">626</a>
-<a href="#627" id="627">627</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -661,7 +660,6 @@
 <span class="kw">use </span><span class="kw">super</span>::message::FileStatusesWrapper;
 <span class="kw">use </span><span class="kw">super</span>::pager::WebhdfsPager;
 <span class="kw">use </span><span class="kw">super</span>::writer::WebhdfsWriter;
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/services/webhdfs/writer.rs.html b/docs/rust/src/opendal/services/webhdfs/writer.rs.html
index d928a792..7306457f 100644
--- a/docs/rust/src/opendal/services/webhdfs/writer.rs.html
+++ b/docs/rust/src/opendal/services/webhdfs/writer.rs.html
@@ -70,7 +70,6 @@
 <a href="#70" id="70">70</a>
 <a href="#71" id="71">71</a>
 <a href="#72" id="72">72</a>
-<a href="#73" id="73">73</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -94,7 +93,6 @@
 
 <span class="kw">use </span><span class="kw">super</span>::backend::WebhdfsBackend;
 <span class="kw">use </span><span class="kw">super</span>::error::parse_error;
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpWrite;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/types/appender.rs.html b/docs/rust/src/opendal/types/appender.rs.html
index 0876a39c..81a459e0 100644
--- a/docs/rust/src/opendal/types/appender.rs.html
+++ b/docs/rust/src/opendal/types/appender.rs.html
@@ -250,7 +250,6 @@
 <a href="#250" id="250">250</a>
 <a href="#251" id="251">251</a>
 <a href="#252" id="252">252</a>
-<a href="#253" id="253">253</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -280,7 +279,6 @@
 <span class="kw">use </span>futures::AsyncWrite;
 <span class="kw">use </span>futures::FutureExt;
 
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpAppend;
 <span class="kw">use </span><span class="kw">crate</span>::raw::oio::Append;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
diff --git a/docs/rust/src/opendal/types/mod.rs.html b/docs/rust/src/opendal/types/mod.rs.html
index 43f77955..de67c8c6 100644
--- a/docs/rust/src/opendal/types/mod.rs.html
+++ b/docs/rust/src/opendal/types/mod.rs.html
@@ -61,8 +61,6 @@
 <a href="#61" id="61">61</a>
 <a href="#62" id="62">62</a>
 <a href="#63" id="63">63</a>
-<a href="#64" id="64">64</a>
-<a href="#65" id="65">65</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -126,7 +124,5 @@
 
 <span class="kw">mod </span>capability;
 <span class="kw">pub use </span>capability::Capability;
-
-<span class="kw">pub mod </span>ops;
 </code></pre></div>
 </section></main><div id="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="opendal" data-themes="" data-resource-suffix="" data-rustdoc-version="1.69.0 (84c898d65 2023-04-16)" data-search-js="search-8a59a8356673ec1f.js" data-settings-js="settings-f0c5c39777a9a2f6.js" data-settings-css="settings-0bcba95ff279c1db.css" ></div></body></html>
\ No newline at end of file
diff --git a/docs/rust/src/opendal/types/operator/blocking_operator.rs.html b/docs/rust/src/opendal/types/operator/blocking_operator.rs.html
index 5cc7b150..310837ab 100644
--- a/docs/rust/src/opendal/types/operator/blocking_operator.rs.html
+++ b/docs/rust/src/opendal/types/operator/blocking_operator.rs.html
@@ -786,6 +786,7 @@
 <a href="#786" id="786">786</a>
 <a href="#787" id="787">787</a>
 <a href="#788" id="788">788</a>
+<a href="#789" id="789">789</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -809,12 +810,10 @@
 <span class="kw">use </span>bytes::Bytes;
 <span class="kw">use </span>flagset::FlagSet;
 
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
+<span class="kw">use </span><span class="kw">super</span>::operator_functions::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
-<span class="kw">use </span><span class="kw">super</span>::operator_functions::<span class="kw-2">*</span>;
-
 <span class="doccomment">/// BlockingOperator is the entry for all public blocking APIs.
 ///
 /// Read [`concepts`][docs::concepts] for know more about [`Operator`].
@@ -1371,7 +1370,10 @@
     ///
     /// # async fn test(op: BlockingOperator) -&gt; Result&lt;()&gt; {
     /// let bs = b&quot;hello, world!&quot;.to_vec();
-    /// let _ = op.write_with(&quot;hello.txt&quot;, bs).content_type(&quot;text/plain&quot;).call()?;
+    /// let _ = op
+    ///     .write_with(&quot;hello.txt&quot;, bs)
+    ///     .content_type(&quot;text/plain&quot;)
+    ///     .call()?;
     /// # Ok(())
     /// # }
     /// ```
diff --git a/docs/rust/src/opendal/types/operator/operator.rs.html b/docs/rust/src/opendal/types/operator/operator.rs.html
index 9997e9e8..57ffc4c6 100644
--- a/docs/rust/src/opendal/types/operator/operator.rs.html
+++ b/docs/rust/src/opendal/types/operator/operator.rs.html
@@ -1588,6 +1588,7 @@
 <a href="#1588" id="1588">1588</a>
 <a href="#1589" id="1589">1589</a>
 <a href="#1590" id="1590">1590</a>
+<a href="#1591" id="1591">1591</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -1619,11 +1620,11 @@
 
 <span class="kw">use </span><span class="kw">super</span>::BlockingOperator;
 <span class="kw">use </span><span class="kw">crate</span>::operator_futures::<span class="kw-2">*</span>;
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
 <span class="doccomment">/// Operator is the entry for all public async APIs.
+///
 /// Developer should manipulate the data from storage service through Operator only by right.
 ///
 /// We will usually do some general checks and data transformations in this layer,
@@ -1803,7 +1804,6 @@
     /// # use anyhow::Result;
     /// # use futures::io;
     /// # use opendal::Operator;
-    /// # use opendal::ops::OpStat;
     /// use opendal::ErrorKind;
     /// #
     /// # #[tokio::main]
@@ -2038,7 +2038,6 @@
     /// ```
     /// # use std::io::Result;
     /// # use opendal::Operator;
-    /// # use opendal::ops::OpRead;
     /// # use futures::TryStreamExt;
     /// # #[tokio::main]
     /// # async fn test(op: Operator) -&gt; Result&lt;()&gt; {
@@ -2114,7 +2113,6 @@
     /// ```
     /// # use std::io::Result;
     /// # use opendal::Operator;
-    /// # use opendal::ops::OpRead;
     /// # use futures::TryStreamExt;
     /// # #[tokio::main]
     /// # async fn test(op: Operator) -&gt; Result&lt;()&gt; {
@@ -2176,13 +2174,9 @@
     /// # use opendal::Operator;
     /// # use futures::TryStreamExt;
     /// # use opendal::Scheme;
-    /// # use opendal::ops::OpRead;
     /// # #[tokio::main]
     /// # async fn test(op: Operator) -&gt; Result&lt;()&gt; {
-    /// let r = op
-    ///     .reader_with(&quot;path/to/file&quot;)
-    ///     .range((0..10))
-    ///     .await?;
+    /// let r = op.reader_with(&quot;path/to/file&quot;).range((0..10)).await?;
     /// # Ok(())
     /// # }
     /// ```
@@ -2421,11 +2415,13 @@
     /// # use futures::StreamExt;
     /// # use futures::SinkExt;
     /// use bytes::Bytes;
-    /// use opendal::ops::OpWrite;
     ///
     /// # #[tokio::main]
     /// # async fn test(op: Operator) -&gt; Result&lt;()&gt; {
-    /// let mut w = op.writer_with(&quot;path/to/file&quot;).content_type(&quot;application/octet-stream&quot;).await?;
+    /// let mut w = op
+    ///     .writer_with(&quot;path/to/file&quot;)
+    ///     .content_type(&quot;application/octet-stream&quot;)
+    ///     .await?;
     /// w.write(vec![0; 4096]).await?;
     /// w.write(vec![1; 4096]).await?;
     /// w.close().await?;
@@ -2472,12 +2468,14 @@
     /// # use std::io::Result;
     /// # use opendal::Operator;
     /// use bytes::Bytes;
-    /// use opendal::ops::OpWrite;
     ///
     /// # #[tokio::main]
     /// # async fn test(op: Operator) -&gt; Result&lt;()&gt; {
     /// let bs = b&quot;hello, world!&quot;.to_vec();
-    /// let _ = op.write_with(&quot;path/to/file&quot;, bs).content_type(&quot;text/plain&quot;).await?;
+    /// let _ = op
+    ///     .write_with(&quot;path/to/file&quot;, bs)
+    ///     .content_type(&quot;text/plain&quot;)
+    ///     .await?;
     /// # Ok(())
     /// # }
     /// ```
@@ -2547,11 +2545,13 @@
     /// # use std::io::Result;
     /// # use opendal::Operator;
     /// use bytes::Bytes;
-    /// use opendal::ops::OpAppend;
     ///
     /// # #[tokio::main]
     /// # async fn test(op: Operator) -&gt; Result&lt;()&gt; {
-    /// let mut a = op.appender_with(&quot;path/to/file&quot;).content_type(&quot;application/octet-stream&quot;).await?;
+    /// let mut a = op
+    ///     .appender_with(&quot;path/to/file&quot;)
+    ///     .content_type(&quot;application/octet-stream&quot;)
+    ///     .await?;
     /// a.append(vec![0; 4096]).await?;
     /// a.append(vec![1; 4096]).await?;
     /// a.close().await?;
@@ -2601,12 +2601,14 @@
     /// # use std::io::Result;
     /// # use opendal::Operator;
     /// use bytes::Bytes;
-    /// use opendal::ops::OpAppend;
     ///
     /// # #[tokio::main]
     /// # async fn test(op: Operator) -&gt; Result&lt;()&gt; {
     /// let bs = b&quot;hello, world!&quot;.to_vec();
-    /// let _ = op.append_with(&quot;path/to/file&quot;, bs).content_type(&quot;text/plain&quot;).await?;
+    /// let _ = op
+    ///     .append_with(&quot;path/to/file&quot;, bs)
+    ///     .content_type(&quot;text/plain&quot;)
+    ///     .await?;
     /// # Ok(())
     /// # }
     /// ```
@@ -2871,13 +2873,16 @@
     /// # use anyhow::Result;
     /// # use futures::io;
     /// use futures::TryStreamExt;
-    /// use opendal::ops::OpList;
     /// use opendal::EntryMode;
     /// use opendal::Metakey;
     /// use opendal::Operator;
     /// # #[tokio::main]
     /// # async fn test(op: Operator) -&gt; Result&lt;()&gt; {
-    /// let mut ds = op.list_with(&quot;path/to/dir/&quot;).limit(10).start_after(&quot;start&quot;).await?;
+    /// let mut ds = op
+    ///     .list_with(&quot;path/to/dir/&quot;)
+    ///     .limit(10)
+    ///     .start_after(&quot;start&quot;)
+    ///     .await?;
     /// while let Some(mut de) = ds.try_next().await? {
     ///     let meta = op.metadata(&amp;de, Metakey::Mode).await?;
     ///     match meta.mode() {
@@ -2902,7 +2907,6 @@
     /// # use anyhow::Result;
     /// # use futures::io;
     /// use futures::TryStreamExt;
-    /// use opendal::ops::OpList;
     /// use opendal::EntryMode;
     /// use opendal::Metakey;
     /// use opendal::Operator;
@@ -3074,7 +3078,6 @@
     /// use futures::io;
     /// use opendal::Operator;
     /// use std::time::Duration;
-    /// use opendal::ops::OpRead;
     ///
     /// #[tokio::main]
     /// async fn test(op: Operator) -&gt; Result&lt;()&gt; {
@@ -3143,7 +3146,6 @@
     /// ```no_run
     /// use anyhow::Result;
     /// use futures::io;
-    /// use opendal::ops::OpWrite;
     /// use opendal::Operator;
     /// use std::time::Duration;
     ///
diff --git a/docs/rust/src/opendal/types/operator/operator_functions.rs.html b/docs/rust/src/opendal/types/operator/operator_functions.rs.html
index c066d0ea..e183d022 100644
--- a/docs/rust/src/opendal/types/operator/operator_functions.rs.html
+++ b/docs/rust/src/opendal/types/operator/operator_functions.rs.html
@@ -95,7 +95,6 @@
 <a href="#95" id="95">95</a>
 <a href="#96" id="96">96</a>
 <a href="#97" id="97">97</a>
-<a href="#98" id="98">98</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -119,7 +118,6 @@
 
 </span><span class="kw">use </span>bytes::Bytes;
 
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/types/operator/operator_futures.rs.html b/docs/rust/src/opendal/types/operator/operator_futures.rs.html
index 413e45af..e6fe6a0b 100644
--- a/docs/rust/src/opendal/types/operator/operator_futures.rs.html
+++ b/docs/rust/src/opendal/types/operator/operator_futures.rs.html
@@ -538,10 +538,6 @@
 <a href="#538" id="538">538</a>
 <a href="#539" id="539">539</a>
 <a href="#540" id="540">540</a>
-<a href="#541" id="541">541</a>
-<a href="#542" id="542">542</a>
-<a href="#543" id="543">543</a>
-<a href="#544" id="544">544</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -563,19 +559,18 @@
 //!
 //! By using futures, users can add more options for operation.
 
-</span><span class="kw">use </span>bytes::Bytes;
-
-<span class="kw">use </span>std::mem;
+</span><span class="kw">use </span>std::mem;
 <span class="kw">use </span>std::ops::RangeBounds;
 <span class="kw">use </span>std::pin::Pin;
-<span class="kw">use </span>std::task::{Context, Poll};
+<span class="kw">use </span>std::task::Context;
+<span class="kw">use </span>std::task::Poll;
 <span class="kw">use </span>std::time::Duration;
 
+<span class="kw">use </span>bytes::Bytes;
 <span class="kw">use </span>futures::future::BoxFuture;
 <span class="kw">use </span>futures::Future;
 <span class="kw">use </span>futures::FutureExt;
 
-<span class="kw">use </span><span class="kw">crate</span>::ops::<span class="kw-2">*</span>;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
@@ -821,7 +816,6 @@
     ///
     /// If the content length is not set, the content length will be
     /// calculated automatically by buffering part of data.
-    ///
     </span><span class="kw">pub fn </span>content_length(<span class="kw-2">mut </span><span class="self">self</span>, v: u64) -&gt; <span class="self">Self </span>{
         <span class="self">self</span>.<span class="number">0 </span>= <span class="self">self
             </span>.<span class="number">0
@@ -970,7 +964,6 @@
     ///
     /// If the content length is not set, the content length will be
     /// calculated automatically by buffering part of data.
-    ///
     </span><span class="kw">pub fn </span>content_length(<span class="kw-2">mut </span><span class="self">self</span>, v: u64) -&gt; <span class="self">Self </span>{
         <span class="self">self</span>.<span class="number">0 </span>= <span class="self">self
             </span>.<span class="number">0
@@ -1021,7 +1014,6 @@
     ///
     /// If the content length is not set, the content length will be
     /// calculated automatically by buffering part of data.
-    ///
     </span><span class="kw">pub fn </span>content_length(<span class="kw-2">mut </span><span class="self">self</span>, v: u64) -&gt; <span class="self">Self </span>{
         <span class="self">self</span>.<span class="number">0 </span>= <span class="self">self</span>.<span class="number">0</span>.map_args(|args| args.with_content_length(v));
         <span class="self">self
diff --git a/docs/rust/src/opendal/types/reader.rs.html b/docs/rust/src/opendal/types/reader.rs.html
index 3417dfda..b0d93761 100644
--- a/docs/rust/src/opendal/types/reader.rs.html
+++ b/docs/rust/src/opendal/types/reader.rs.html
@@ -326,7 +326,6 @@
 <a href="#326" id="326">326</a>
 <a href="#327" id="327">327</a>
 <a href="#328" id="328">328</a>
-<a href="#329" id="329">329</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -355,7 +354,6 @@
 <span class="kw">use </span>futures::AsyncSeek;
 <span class="kw">use </span>futures::Stream;
 
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpRead;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
diff --git a/docs/rust/src/opendal/types/writer.rs.html b/docs/rust/src/opendal/types/writer.rs.html
index e2b25aa6..a7c3d114 100644
--- a/docs/rust/src/opendal/types/writer.rs.html
+++ b/docs/rust/src/opendal/types/writer.rs.html
@@ -318,7 +318,6 @@
 <a href="#318" id="318">318</a>
 <a href="#319" id="319">319</a>
 <a href="#320" id="320">320</a>
-<a href="#321" id="321">321</a>
 </pre><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -348,7 +347,6 @@
 <span class="kw">use </span>futures::AsyncWrite;
 <span class="kw">use </span>futures::FutureExt;
 
-<span class="kw">use </span><span class="kw">crate</span>::ops::OpWrite;
 <span class="kw">use </span><span class="kw">crate</span>::raw::oio::Write;
 <span class="kw">use </span><span class="kw">crate</span>::raw::<span class="kw-2">*</span>;
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
diff --git a/docs/services/azblob/index.html b/docs/services/azblob/index.html
index 5ede66f6..6df79fe1 100644
--- a/docs/services/azblob/index.html
+++ b/docs/services/azblob/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.3.1">
 <title data-rh="true">Azblob | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/azblob"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.cfb3adef.css">
-<link rel="preload" href="/assets/js/runtime~main.89a5daef.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d4937ab8.js" as="script">
 <link rel="preload" href="/assets/js/main.0093ba13.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="roun [...]
-<script src="/assets/js/runtime~main.89a5daef.js"></script>
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="roun [...]
+<script src="/assets/js/runtime~main.d4937ab8.js"></script>
 <script src="/assets/js/main.0093ba13.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/services/azdfs/index.html b/docs/services/azdfs/index.html
index bd1681cf..143a81e6 100644
--- a/docs/services/azdfs/index.html
+++ b/docs/services/azdfs/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.3.1">
 <title data-rh="true">Azdfs | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/services/azdfs"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta d [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.cfb3adef.css">
-<link rel="preload" href="/assets/js/runtime~main.89a5daef.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d4937ab8.js" as="script">
 <link rel="preload" href="/assets/js/main.0093ba13.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="roun [...]
-<script src="/assets/js/runtime~main.89a5daef.js"></script>
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="roun [...]
+<script src="/assets/js/runtime~main.d4937ab8.js"></script>
 <script src="/assets/js/main.0093ba13.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/vision/index.html b/docs/vision/index.html
index 6de38496..1d1dc07c 100644
--- a/docs/vision/index.html
+++ b/docs/vision/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.3.1">
 <title data-rh="true">Vision | Apache OpenDAL</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/docs/vision"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh= [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.cfb3adef.css">
-<link rel="preload" href="/assets/js/runtime~main.89a5daef.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d4937ab8.js" as="script">
 <link rel="preload" href="/assets/js/main.0093ba13.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="roun [...]
-<script src="/assets/js/runtime~main.89a5daef.js"></script>
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="roun [...]
+<script src="/assets/js/runtime~main.d4937ab8.js"></script>
 <script src="/assets/js/main.0093ba13.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/index.html b/index.html
index 784af943..89bcc102 100644
--- a/index.html
+++ b/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.3.1">
 <title data-rh="true">Apache OpenDAL</title><meta data-rh="true" property="og:title" content="Apache OpenDAL"><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true" name="docse [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.cfb3adef.css">
-<link rel="preload" href="/assets/js/runtime~main.89a5daef.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.d4937ab8.js" as="script">
 <link rel="preload" href="/assets/js/main.0093ba13.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
 <div id="docusaurus-base-url-issue-banner-container"></div><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hid [...]
-<script src="/assets/js/runtime~main.89a5daef.js"></script>
+<script src="/assets/js/runtime~main.d4937ab8.js"></script>
 <script src="/assets/js/main.0093ba13.js"></script>
 </body>
 </html>
\ No newline at end of file