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/08 13:47:37 UTC

[incubator-opendal] branch gh-pages updated: deploy: 6fa13ad41f5171f526258d162b26e518aee19022

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 638fd69d deploy: 6fa13ad41f5171f526258d162b26e518aee19022
638fd69d is described below

commit 638fd69d5cadc20529a557df272dd2034ca2adab
Author: Xuanwo <Xu...@users.noreply.github.com>
AuthorDate: Mon May 8 13:47:33 2023 +0000

    deploy: 6fa13ad41f5171f526258d162b26e518aee19022
---
 404.html                                           |  4 +-
 assets/js/ae4554eb.5e223595.js                     |  1 +
 assets/js/ae4554eb.620962c9.js                     |  1 -
 assets/js/c377a04b.720ca138.js                     |  1 -
 assets/js/c377a04b.d16abb7b.js                     |  1 +
 ...e~main.c88a8c95.js => runtime~main.ff6ddbc8.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/index.html                                    |  6 +-
 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                  | 56 +++++++++---------
 docs/nodejs/interfaces/PresignedRequest.html       |  8 +--
 docs/python/opendal.html                           | 50 ++++++++--------
 docs/python/search.js                              |  2 +-
 docs/rust/opendal/services/struct.Azblob.html      | 30 ++++++----
 docs/rust/opendal/services/struct.Azdfs.html       | 26 +++++---
 docs/rust/opendal/services/struct.Dashmap.html     | 26 ++++++--
 docs/rust/opendal/services/struct.Fs.html          | 18 ++++--
 docs/rust/opendal/services/struct.Ftp.html         | 24 +++++---
 docs/rust/opendal/services/struct.Gcs.html         | 42 +++++++------
 docs/rust/opendal/services/struct.Gdrive.html      |  2 +-
 docs/rust/opendal/services/struct.Ghac.html        | 28 ++++++---
 docs/rust/opendal/services/struct.Hdfs.html        | 20 +++++--
 docs/rust/opendal/services/struct.Http.html        | 28 ++++++---
 docs/rust/opendal/services/struct.Ipfs.html        | 22 +++++--
 docs/rust/opendal/services/struct.Memcached.html   | 22 +++++--
 docs/rust/opendal/services/struct.Memory.html      | 26 ++++++--
 docs/rust/opendal/services/struct.Moka.html        | 38 ++++++++----
 docs/rust/opendal/services/struct.Obs.html         | 26 +++++---
 docs/rust/opendal/services/struct.Oss.html         | 36 ++++++-----
 docs/rust/opendal/services/struct.Redis.html       | 69 +++++++++++++++++-----
 docs/rust/opendal/services/struct.Rocksdb.html     | 22 +++++--
 docs/rust/opendal/services/struct.S3.html          | 66 ++++++++++++---------
 docs/rust/opendal/services/struct.Sftp.html        | 65 ++++++++++++++++----
 docs/rust/opendal/services/struct.Sled.html        | 61 +++++++++++++++----
 docs/rust/opendal/services/struct.Supabase.html    | 24 +++++---
 .../opendal/services/struct.VercelArtifacts.html   | 16 +++--
 docs/rust/opendal/services/struct.Wasabi.html      | 64 +++++++++++---------
 docs/rust/opendal/services/struct.Webdav.html      | 24 +++++---
 docs/rust/opendal/services/struct.Webhdfs.html     | 24 +++++---
 docs/rust/opendal/struct.Capability.html           | 10 ++--
 docs/rust/opendal/struct.Error.html                |  2 +-
 docs/rust/opendal/trait.Builder.html               |  2 +-
 docs/rust/search-index.js                          |  2 +-
 .../src/opendal/services/azblob/backend.rs.html    | 26 +++++++-
 .../src/opendal/services/azdfs/backend.rs.html     | 22 +++++++
 .../src/opendal/services/dashmap/backend.rs.html   | 18 +++++-
 docs/rust/src/opendal/services/fs/backend.rs.html  | 22 ++++++-
 docs/rust/src/opendal/services/ftp/backend.rs.html | 24 ++++++++
 docs/rust/src/opendal/services/gcs/backend.rs.html | 28 +++++++--
 .../src/opendal/services/gdrive/builder.rs.html    |  2 +-
 .../rust/src/opendal/services/ghac/backend.rs.html | 22 ++++++-
 .../rust/src/opendal/services/hdfs/backend.rs.html | 26 +++++++-
 .../rust/src/opendal/services/http/backend.rs.html | 10 ++++
 .../rust/src/opendal/services/ipfs/backend.rs.html | 18 +++++-
 .../src/opendal/services/ipmfs/backend.rs.html     | 44 ++++++++++++++
 .../src/opendal/services/memcached/backend.rs.html | 10 ++++
 .../src/opendal/services/memory/backend.rs.html    | 18 +++++-
 .../rust/src/opendal/services/moka/backend.rs.html | 20 ++++++-
 docs/rust/src/opendal/services/obs/backend.rs.html | 16 ++++-
 docs/rust/src/opendal/services/oss/backend.rs.html | 32 ++++++++--
 .../src/opendal/services/redis/backend.rs.html     | 24 ++++++++
 .../src/opendal/services/rocksdb/backend.rs.html   | 12 +++-
 docs/rust/src/opendal/services/s3/backend.rs.html  | 28 +++++++--
 .../rust/src/opendal/services/sftp/backend.rs.html | 34 ++++++++++-
 .../rust/src/opendal/services/sled/backend.rs.html | 24 ++++++++
 .../src/opendal/services/supabase/backend.rs.html  | 12 ++++
 .../services/vercel_artifacts/backend.rs.html      |  4 ++
 .../services/vercel_artifacts/builder.rs.html      |  6 ++
 .../src/opendal/services/wasabi/backend.rs.html    | 30 ++++++++--
 .../src/opendal/services/webdav/backend.rs.html    | 22 ++++++-
 .../src/opendal/services/webhdfs/backend.rs.html   | 24 ++++++++
 docs/rust/src/opendal/types/capability.rs.html     | 32 +++++-----
 docs/vision/index.html                             |  6 +-
 index.html                                         |  4 +-
 81 files changed, 1237 insertions(+), 430 deletions(-)

diff --git a/404.html b/404.html
index 5ae5ce74..b46a3616 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.8610ae2e.css">
-<link rel="preload" href="/assets/js/runtime~main.c88a8c95.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ff6ddbc8.js" as="script">
 <link rel="preload" href="/assets/js/main.e8563114.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.c88a8c95.js"></script>
+<script src="/assets/js/runtime~main.ff6ddbc8.js"></script>
 <script src="/assets/js/main.e8563114.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/assets/js/ae4554eb.5e223595.js b/assets/js/ae4554eb.5e223595.js
new file mode 100644
index 00000000..73dc5dd0
--- /dev/null
+++ b/assets/js/ae4554eb.5e223595.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/ae4554eb.620962c9.js b/assets/js/ae4554eb.620962c9.js
deleted file mode 100644
index 1173ccef..00000000
--- a/assets/js/ae4554eb.620962c9.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/c377a04b.720ca138.js b/assets/js/c377a04b.720ca138.js
deleted file mode 100644
index b60e981e..00000000
--- a/assets/js/c377a04b.720ca138.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[971],{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/c377a04b.d16abb7b.js b/assets/js/c377a04b.d16abb7b.js
new file mode 100644
index 00000000..b62c840e
--- /dev/null
+++ b/assets/js/c377a04b.d16abb7b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[971],{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/runtime~main.c88a8c95.js b/assets/js/runtime~main.ff6ddbc8.js
similarity index 95%
rename from assets/js/runtime~main.c88a8c95.js
rename to assets/js/runtime~main.ff6ddbc8.js
index b188cb33..73c4cc11 100644
--- a/assets/js/runtime~main.c88a8c95.js
+++ b/assets/js/runtime~main.ff6ddbc8.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(b=0;b<e.length;b++){r=e[b][0],a=e[b][1],o=e[b][2];for(var n=!0,i=0;i<r.length;i++)(!1&o||f>=o)&&Object.keys(c.O).every((e=>c.O[e](r[i])))?r.splice(i--,1):(n=!1,o<f&&(f=o));if(n){e.splice(b--,1);var d=a();void 0!==d&&(t=d)}}return t}o=o||0;for(var b=e.length;b>0&&e[b-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(b=0;b<e.length;b++){r=e[b][0],a=e[b][1],o=e[b][2];for(var n=!0,i=0;i<r.length;i++)(!1&o||f>=o)&&Object.keys(c.O).every((e=>c.O[e](r[i])))?r.splice(i--,1):(n=!1,o<f&&(f=o));if(n){e.splice(b--,1);var d=a();void 0!==d&&(t=d)}}return t}o=o||0;for(var b=e.length;b>0&&e[b-1] [...]
\ No newline at end of file
diff --git a/blog/archive/index.html b/blog/archive/index.html
index fee48077..f26e8553 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.8610ae2e.css">
-<link rel="preload" href="/assets/js/runtime~main.c88a8c95.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ff6ddbc8.js" as="script">
 <link rel="preload" href="/assets/js/main.e8563114.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.c88a8c95.js"></script>
+<script src="/assets/js/runtime~main.ff6ddbc8.js"></script>
 <script src="/assets/js/main.e8563114.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/index.html b/blog/index.html
index 7c188d18..07f7f1c9 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.8610ae2e.css">
-<link rel="preload" href="/assets/js/runtime~main.c88a8c95.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ff6ddbc8.js" as="script">
 <link rel="preload" href="/assets/js/main.e8563114.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.c88a8c95.js"></script>
+<script src="/assets/js/runtime~main.ff6ddbc8.js"></script>
 <script src="/assets/js/main.e8563114.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 6bd1e904..3ce9ef4f 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.8610ae2e.css">
-<link rel="preload" href="/assets/js/runtime~main.c88a8c95.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ff6ddbc8.js" as="script">
 <link rel="preload" href="/assets/js/main.e8563114.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.c88a8c95.js"></script>
+<script src="/assets/js/runtime~main.ff6ddbc8.js"></script>
 <script src="/assets/js/main.e8563114.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 04161cec..bc6ca11c 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.8610ae2e.css">
-<link rel="preload" href="/assets/js/runtime~main.c88a8c95.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ff6ddbc8.js" as="script">
 <link rel="preload" href="/assets/js/main.e8563114.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.c88a8c95.js"></script>
+<script src="/assets/js/runtime~main.ff6ddbc8.js"></script>
 <script src="/assets/js/main.e8563114.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/index.html b/blog/tags/index.html
index c9f60a9a..c1588619 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.8610ae2e.css">
-<link rel="preload" href="/assets/js/runtime~main.c88a8c95.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ff6ddbc8.js" as="script">
 <link rel="preload" href="/assets/js/main.e8563114.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.c88a8c95.js"></script>
+<script src="/assets/js/runtime~main.ff6ddbc8.js"></script>
 <script src="/assets/js/main.e8563114.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/index.html b/docs/index.html
index 05d5d595..3190904a 100644
--- a/docs/index.html
+++ b/docs/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/"><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="tru [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL Atom Feed"><link rel="stylesheet" href="/assets/css/styles.8610ae2e.css">
-<link rel="preload" href="/assets/js/runtime~main.c88a8c95.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ff6ddbc8.js" as="script">
 <link rel="preload" href="/assets/js/main.e8563114.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.c88a8c95.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.ff6ddbc8.js"></script>
 <script src="/assets/js/main.e8563114.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 6dd768da..d2952a23 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/7ce2371/bindings/nodejs/index.d.ts#L417">index.d.ts:417</a></li></ul></aside>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/6fa13ad/bindings/nodejs/index.d.ts#L417">index.d.ts:417</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/7ce2371/bindings/nodejs/index.d.ts#L418">index.d.ts:418</a></li></ul></aside></li></ul></section></section></div>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/6fa13ad/bindings/nodejs/index.d.ts#L418">index.d.ts:418</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 31b20dd8..a942710f 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/7ce2371/bindings/nodejs/index.d.ts#L380">index.d.ts:380</a></li></ul></aside>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/6fa13ad/bindings/nodejs/index.d.ts#L380">index.d.ts:380</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/7ce2371/bindings/nodejs/index.d.ts#L382">index.d.ts:382</a></li></ul></aside></li></ul></section></section></div>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/6fa13ad/bindings/nodejs/index.d.ts#L382">index.d.ts:382</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 036df5e4..b810fad0 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/7ce2371/bindings/nodejs/index.d.ts#L406">index.d.ts:406</a></li></ul></aside>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/6fa13ad/bindings/nodejs/index.d.ts#L406">index.d.ts:406</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/7ce2371/bindings/nodejs/index.d.ts#L415">index.d.ts:415</a></li></ul></aside></li></ul></section></section></div>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/6fa13ad/bindings/nodejs/index.d.ts#L415">index.d.ts:415</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 dd799c96..3772a3fa 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/7ce2371/bindings/nodejs/index.d.ts#L384">index.d.ts:384</a></li></ul></aside>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/6fa13ad/bindings/nodejs/index.d.ts#L384">index.d.ts:384</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/7ce2371/bindings/nodejs/index.d.ts#L390">index.d.ts:390</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/6fa13ad/bindings/nodejs/index.d.ts#L390">index.d.ts:390</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/7ce2371/bindings/nodejs/index.d.ts#L392">index.d.ts:392</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/6fa13ad/bindings/nodejs/index.d.ts#L392">index.d.ts:392</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/7ce2371/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/6fa13ad/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-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/7ce2371/bindings/nodejs/index.d.ts#L396">index.d.ts:396</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/6fa13ad/bindings/nodejs/index.d.ts#L396">index.d.ts:396</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/7ce2371/bindings/nodejs/index.d.ts#L398">index.d.ts:398</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/6fa13ad/bindings/nodejs/index.d.ts#L398">index.d.ts:398</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/7ce2371/bindings/nodejs/index.d.ts#L404">index.d.ts:404</a></li></ul></aside></li></ul></section></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/6fa13ad/bindings/nodejs/index.d.ts#L404">index.d.ts:404</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/7ce2371/bindings/nodejs/index.d.ts#L386">index.d.ts:386</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/6fa13ad/bindings/nodejs/index.d.ts#L386">index.d.ts:386</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/7ce2371/bindings/nodejs/index.d.ts#L388">index.d.ts:388</a></li></ul></aside></li></ul></section></section></div>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/6fa13ad/bindings/nodejs/index.d.ts#L388">index.d.ts:388</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 2e07ce27..afffbd53 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/7ce2371/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/6fa13ad/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">
@@ -75,7 +75,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/7ce2371/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/6fa13ad/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="check" class="tsd-anchor"></a>
@@ -94,7 +94,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/7ce2371/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/6fa13ad/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">
@@ -117,7 +117,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/7ce2371/bindings/nodejs/index.d.ts#L162">index.d.ts:162</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/6fa13ad/bindings/nodejs/index.d.ts#L162">index.d.ts:162</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">
@@ -140,7 +140,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/7ce2371/bindings/nodejs/index.d.ts#L171">index.d.ts:171</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/6fa13ad/bindings/nodejs/index.d.ts#L171">index.d.ts:171</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">
@@ -161,7 +161,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/7ce2371/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/6fa13ad/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">
@@ -182,7 +182,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/7ce2371/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/6fa13ad/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">
@@ -208,7 +208,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/7ce2371/bindings/nodejs/index.d.ts#L251">index.d.ts:251</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/6fa13ad/bindings/nodejs/index.d.ts#L251">index.d.ts:251</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">
@@ -229,7 +229,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/7ce2371/bindings/nodejs/index.d.ts#L260">index.d.ts:260</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/6fa13ad/bindings/nodejs/index.d.ts#L260">index.d.ts:260</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">
@@ -250,7 +250,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/7ce2371/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/6fa13ad/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">
@@ -271,7 +271,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/7ce2371/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/6fa13ad/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">
@@ -294,7 +294,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/7ce2371/bindings/nodejs/index.d.ts#L307">index.d.ts:307</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/6fa13ad/bindings/nodejs/index.d.ts#L307">index.d.ts:307</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">
@@ -317,7 +317,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/7ce2371/bindings/nodejs/index.d.ts#L330">index.d.ts:330</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/6fa13ad/bindings/nodejs/index.d.ts#L330">index.d.ts:330</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">
@@ -341,7 +341,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/7ce2371/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/6fa13ad/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="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">
@@ -365,7 +365,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/7ce2371/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/6fa13ad/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="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">
@@ -389,7 +389,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/7ce2371/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/6fa13ad/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="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">
@@ -410,7 +410,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/7ce2371/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/6fa13ad/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">
@@ -431,7 +431,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/7ce2371/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/6fa13ad/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">
@@ -457,7 +457,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/7ce2371/bindings/nodejs/index.d.ts#L272">index.d.ts:272</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/6fa13ad/bindings/nodejs/index.d.ts#L272">index.d.ts:272</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">
@@ -483,7 +483,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/7ce2371/bindings/nodejs/index.d.ts#L284">index.d.ts:284</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/6fa13ad/bindings/nodejs/index.d.ts#L284">index.d.ts:284</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">
@@ -507,7 +507,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/7ce2371/bindings/nodejs/index.d.ts#L182">index.d.ts:182</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/6fa13ad/bindings/nodejs/index.d.ts#L182">index.d.ts:182</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">
@@ -531,7 +531,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/7ce2371/bindings/nodejs/index.d.ts#L193">index.d.ts:193</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/6fa13ad/bindings/nodejs/index.d.ts#L193">index.d.ts:193</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">
@@ -554,7 +554,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/7ce2371/bindings/nodejs/index.d.ts#L216">index.d.ts:216</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/6fa13ad/bindings/nodejs/index.d.ts#L216">index.d.ts:216</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">
@@ -577,7 +577,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/7ce2371/bindings/nodejs/index.d.ts#L239">index.d.ts:239</a></li></ul></aside></li></ul></section>
+<li>Defined in <a href="https://github.com/apache/incubator-opendal/blob/6fa13ad/bindings/nodejs/index.d.ts#L239">index.d.ts:239</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">
@@ -608,7 +608,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/7ce2371/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/6fa13ad/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">
@@ -629,7 +629,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/7ce2371/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/6fa13ad/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">
@@ -652,7 +652,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/7ce2371/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/6fa13ad/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">
@@ -675,7 +675,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/7ce2371/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/6fa13ad/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 58b202e8..c7b6cd5f 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/7ce2371/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/6fa13ad/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/7ce2371/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/6fa13ad/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/7ce2371/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/6fa13ad/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/7ce2371/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/6fa13ad/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/python/opendal.html b/docs/python/opendal.html
index a7a4538f..4972ac4c 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.content_md5">content_md5</a>
+                                <a class="variable" href="#Metadata.content_type">content_type</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.mode">mode</a>
+                                <a class="variable" href="#Metadata.etag">etag</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.etag">etag</a>
+                                <a class="variable" href="#Metadata.mode">mode</a>
                         </li>
                 </ul>
 
@@ -852,67 +852,67 @@ The default value for whence is <code>SEEK_SET</code>. Values for <code>whence</
     
     
 
-                            <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.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.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>
 
 
                             </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.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>
 
 
diff --git a/docs/python/search.js b/docs/python/search.js
index d8deb958..e328bd75 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/opendal/services/struct.Azblob.html b/docs/rust/opendal/services/struct.Azblob.html
index 2f77eda8..ad3eecb3 100644
--- a/docs/rust/opendal/services/struct.Azblob.html
+++ b/docs/rust/opendal/services/struct.Azblob.html
@@ -1,13 +1,21 @@
-<!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>
 <li><input disabled="" type="checkbox" checked=""/>
+stat</li>
+<li><input disabled="" type="checkbox" checked=""/>
 read</li>
 <li><input disabled="" type="checkbox" checked=""/>
 write</li>
 <li><input disabled="" type="checkbox" checked=""/>
+create_dir</li>
+<li><input disabled="" type="checkbox" checked=""/>
+delete</li>
+<li><input disabled="" type="checkbox" checked=""/>
 copy</li>
+<li><input disabled="" type="checkbox"/>
+rename</li>
 <li><input disabled="" type="checkbox" checked=""/>
 list</li>
 <li><input disabled="" type="checkbox" checked=""/>
@@ -66,37 +74,37 @@ az storage container create --name test --connection-string &quot;DefaultEndpoin
 
     <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#162-329">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#166-333">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#175-179">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#187-194">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#179-183">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#191-198">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#200-206">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#204-210">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#212-218">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#216-222">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#227-233">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#231-237">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#241-244">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#245-248">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#273-328">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#277-332">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==;
@@ -114,9 +122,9 @@ 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#331-409">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#335-413">source</a><a href="#impl-Builder-for-AzblobBuilder" 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'>Construct a builder from given iterator.</div></details><details class="toggle method-toggle" open><summary><section id="method.from_env" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/types/builder.rs.html#57-71">source</a><a href="#method.from_env" 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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-AzblobBuilder" class="impl"><a class="srclink rightside" href="../../s [...]
+    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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-AzblobBuilder" class="impl"><a class="srclink rightside" href="../../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 [...]
     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 3a6a13a6..02da366a 100644
--- a/docs/rust/opendal/services/struct.Azdfs.html
+++ b/docs/rust/opendal/services/struct.Azdfs.html
@@ -1,14 +1,22 @@
-<!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."><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="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 Data Lake Storage Gen2 Support."><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="font" type="font/woff2" crossorigin href=". [...]
 <p>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>
 <p>This service can be used to:</p>
 <ul>
 <li><input disabled="" type="checkbox" checked=""/>
+stat</li>
+<li><input disabled="" type="checkbox" checked=""/>
 read</li>
 <li><input disabled="" type="checkbox" checked=""/>
 write</li>
 <li><input disabled="" type="checkbox" checked=""/>
+create_dir</li>
+<li><input disabled="" type="checkbox" checked=""/>
+delete</li>
+<li><input disabled="" type="checkbox"/>
+copy</li>
+<li><input disabled="" type="checkbox" checked=""/>
 rename</li>
 <li><input disabled="" type="checkbox" checked=""/>
 list</li>
@@ -63,32 +71,32 @@ 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#147-215">source</a><a href="#impl-AzdfsBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Azdfs.htm [...]
+</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#151-219">source</a><a href="#impl-AzdfsBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Azdfs.htm [...]
 <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#160-164">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 [...]
-</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#172-179">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#164-168">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 [...]
+</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#176-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/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#185-191">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#189-195">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#197-203">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#201-207">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#211-214">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#215-218">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#217-289">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#221-293">source</a><a href="#impl-Builder-for-AzdfsBuilder" class="anchor">§</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'>Construct a builder from given iterator.</div></details><details class="toggle method-toggle" open><summary><section id="method.from_env" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/types/builder.rs.html#57-71">source</a><a href="#method.from_env" 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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-AzdfsBuilder" class="impl"><a class="srclink rightside" href="../../sr [...]
+    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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-AzdfsBuilder" class="impl"><a class="srclink rightside" href="../../sr [...]
     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.Dashmap.html b/docs/rust/opendal/services/struct.Dashmap.html
index 4144bda7..1f9736ae 100644
--- a/docs/rust/opendal/services/struct.Dashmap.html
+++ b/docs/rust/opendal/services/struct.Dashmap.html
@@ -1,20 +1,34 @@
-<!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="dashmap backend support."><title>Dashmap 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 [...]
+<!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="dashmap backend support."><title>Dashmap 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 [...]
 <h2 id="capabilities"><a href="#capabilities">Capabilities</a></h2>
 <p>This service can be used to:</p>
 <ul>
 <li><input disabled="" type="checkbox" checked=""/>
-get</li>
+stat</li>
 <li><input disabled="" type="checkbox" checked=""/>
-set</li>
+read</li>
+<li><input disabled="" type="checkbox" checked=""/>
+write</li>
+<li><input disabled="" type="checkbox" checked=""/>
+create_dir</li>
 <li><input disabled="" type="checkbox" checked=""/>
 delete</li>
+<li><input disabled="" type="checkbox"/>
+copy</li>
+<li><input disabled="" type="checkbox"/>
+rename</li>
+<li><input disabled="" type="checkbox"/>
+list</li>
 <li><input disabled="" type="checkbox" checked=""/>
 scan</li>
+<li><input disabled="" type="checkbox"/>
+presign</li>
+<li><input disabled="" type="checkbox"/>
+blocking</li>
 </ul>
-</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-DashmapBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/dashmap/backend.rs.html#42-48">source</a><a href="#impl-DashmapBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Dashm [...]
-</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-DashmapBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/dashmap/backend.rs.html#50-68">source</a><a href="#impl-Builder-for-DashmapBuilder" 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-DashmapBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/dashmap/backend.rs.html#49-55">source</a><a href="#impl-DashmapBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Dashm [...]
+</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-DashmapBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/dashmap/backend.rs.html#57-75">source</a><a href="#impl-Builder-for-DashmapBuilder" 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'>Construct a builder from given iterator.</div></details><details class="toggle method-toggle" open><summary><section id="method.from_env" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/types/builder.rs.html#57-71">source</a><a href="#method.from_env" 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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Default-for-DashmapBuilder" class="impl"><a class="srclink rightside" href="../. [...]
+    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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Default-for-DashmapBuilder" class="impl"><a class="srclink rightside" href="../. [...]
     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 78b5b760..141cc264 100644
--- a/docs/rust/opendal/services/struct.Fs.html
+++ b/docs/rust/opendal/services/struct.Fs.html
@@ -1,12 +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="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>
 <li><input disabled="" type="checkbox" checked=""/>
+stat</li>
+<li><input disabled="" type="checkbox" checked=""/>
 read</li>
 <li><input disabled="" type="checkbox" checked=""/>
 write</li>
 <li><input disabled="" type="checkbox" checked=""/>
+create_dir</li>
+<li><input disabled="" type="checkbox" checked=""/>
+delete</li>
+<li><input disabled="" type="checkbox" checked=""/>
 copy</li>
 <li><input disabled="" type="checkbox" checked=""/>
 rename</li>
@@ -45,16 +51,16 @@ 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#93-127">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#106-114">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#122-126">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#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 [...]
 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#129-218">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#132-221">source</a><a href="#impl-Builder-for-FsBuilder" class="anchor">§</a><h3 clas [...]
     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'>Construct a builder from given iterator.</div></details><details class="toggle method-toggle" open><summary><section id="method.from_env" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/types/builder.rs.html#57-71">source</a><a href="#method.from_env" 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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-FsBuilder" class="impl"><a class="srclink rightside" href="../../src/o [...]
+    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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-FsBuilder" class="impl"><a class="srclink rightside" href="../../src/o [...]
     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 8093371c..1b35e7dd 100644
--- a/docs/rust/opendal/services/struct.Ftp.html
+++ b/docs/rust/opendal/services/struct.Ftp.html
@@ -1,12 +1,22 @@
-<!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>
 <li><input disabled="" type="checkbox" checked=""/>
+stat</li>
+<li><input disabled="" type="checkbox" checked=""/>
 read</li>
 <li><input disabled="" type="checkbox" checked=""/>
 write</li>
 <li><input disabled="" type="checkbox" checked=""/>
+create_dir</li>
+<li><input disabled="" type="checkbox" checked=""/>
+delete</li>
+<li><input disabled="" type="checkbox"/>
+copy</li>
+<li><input disabled="" type="checkbox"/>
+rename</li>
+<li><input disabled="" type="checkbox" checked=""/>
 list</li>
 <li><input disabled="" type="checkbox"/>
 <del>scan</del></li>
@@ -40,13 +50,13 @@ 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#109-153">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#122-130">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#133-141">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#144-152">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#155-229">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#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 [...]
     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'>Construct a builder from given iterator.</div></details><details class="toggle method-toggle" open><summary><section id="method.from_env" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/types/builder.rs.html#57-71">source</a><a href="#method.from_env" 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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-FtpBuilder" class="impl"><a class="srclink rightside" href="../../src/ [...]
+    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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-FtpBuilder" class="impl"><a class="srclink rightside" href="../../src/ [...]
     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 dcfdf3ea..df62c79b 100644
--- a/docs/rust/opendal/services/struct.Gcs.html
+++ b/docs/rust/opendal/services/struct.Gcs.html
@@ -1,17 +1,25 @@
-<!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>
 <li><input disabled="" type="checkbox" checked=""/>
+stat</li>
+<li><input disabled="" type="checkbox" checked=""/>
 read</li>
 <li><input disabled="" type="checkbox" checked=""/>
 write</li>
 <li><input disabled="" type="checkbox" checked=""/>
-list</li>
+create_dir</li>
 <li><input disabled="" type="checkbox" checked=""/>
-scan</li>
+delete</li>
 <li><input disabled="" type="checkbox" checked=""/>
 copy</li>
+<li><input disabled="" type="checkbox"/>
+rename</li>
+<li><input disabled="" type="checkbox" checked=""/>
+list</li>
+<li><input disabled="" type="checkbox" checked=""/>
+scan</li>
 <li><input disabled="" type="checkbox" checked=""/>
 presign</li>
 <li><input disabled="" type="checkbox"/>
@@ -52,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#129-254">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#140-143">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#156-161">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#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 [...]
 <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>
@@ -63,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#167-172">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#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. [...]
 <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#175-180">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#183-188">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#191-196">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#204-207">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#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 [...]
 <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#210-213">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#214-217">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#224-229">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#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 [...]
 <p>Available values are:</p>
 <ul>
 <li><code>authenticatedRead</code></li>
@@ -87,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#238-243">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#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 [...]
 <p>Available values are:</p>
 <ul>
 <li><code>STANDARD</code></li>
@@ -95,13 +103,13 @@ 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#249-253">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#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:// [...]
 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#274-381">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#278-385">source</a><a href="#impl-Builder-for-GcsBuilder" class="anchor">§</a><h3 c [...]
     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'>Construct a builder from given iterator.</div></details><details class="toggle method-toggle" open><summary><section id="method.from_env" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/types/builder.rs.html#57-71">source</a><a href="#method.from_env" 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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-GcsBuilder" class="impl"><a class="srclink rightside" href="../../src/ [...]
+    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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-GcsBuilder" class="impl"><a class="srclink rightside" href="../../src/ [...]
     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.Gdrive.html b/docs/rust/opendal/services/struct.Gdrive.html
index ba00988f..307687c0 100644
--- a/docs/rust/opendal/services/struct.Gdrive.html
+++ b/docs/rust/opendal/services/struct.Gdrive.html
@@ -22,7 +22,7 @@ rename</li>
 <li><code>access_token</code>: set the access_token for google drive api</li>
 <li><code>root</code>: Set the work directory for backend</li>
 </ul>
-<p>You can refer to [<code>GoogleDriveBuilder</code>]’s docs for more information</p>
+<p>You can refer to <a href="struct.Gdrive.html" title="struct opendal::services::Gdrive"><code>GdriveBuilder</code></a>’s docs for more information</p>
 <h2 id="example"><a href="#example">Example</a></h2><h3 id="via-builder"><a href="#via-builder">Via Builder</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::services::Gdrive;
diff --git a/docs/rust/opendal/services/struct.Ghac.html b/docs/rust/opendal/services/struct.Ghac.html
index e9980df8..c4705517 100644
--- a/docs/rust/opendal/services/struct.Ghac.html
+++ b/docs/rust/opendal/services/struct.Ghac.html
@@ -1,17 +1,27 @@
-<!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>
 <li><input disabled="" type="checkbox" checked=""/>
+stat</li>
+<li><input disabled="" type="checkbox" checked=""/>
 read</li>
 <li><input disabled="" type="checkbox" checked=""/>
 write</li>
+<li><input disabled="" type="checkbox" checked=""/>
+create_dir</li>
+<li><input disabled="" type="checkbox" checked=""/>
+delete</li>
+<li><input disabled="" type="checkbox" checked=""/>
+copy</li>
+<li><input disabled="" type="checkbox"/>
+rename</li>
 <li><input disabled="" type="checkbox"/>
 list</li>
 <li><input disabled="" type="checkbox"/>
-<del>scan</del></li>
+scan</li>
 <li><input disabled="" type="checkbox"/>
-<del>presign</del></li>
+presign</li>
 <li><input disabled="" type="checkbox"/>
 blocking</li>
 </ul>
@@ -65,23 +75,23 @@ 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#155-201">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#171-177">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#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 [...]
 <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#186-189">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#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 [...]
 <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#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-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#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 [...]
 <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#203-269">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#207-273">source</a><a href="#impl-Builder-for-GhacBuilder" class="anchor">§</a><h [...]
     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'>Construct a builder from given iterator.</div></details><details class="toggle method-toggle" open><summary><section id="method.from_env" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/types/builder.rs.html#57-71">source</a><a href="#method.from_env" 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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-GhacBuilder" class="impl"><a class="srclink rightside" href="../../src [...]
+    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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-GhacBuilder" class="impl"><a class="srclink rightside" href="../../src [...]
     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 1e4c9200..e519b32b 100644
--- a/docs/rust/opendal/services/struct.Hdfs.html
+++ b/docs/rust/opendal/services/struct.Hdfs.html
@@ -1,13 +1,23 @@
-<!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>
 <ul>
 <li><input disabled="" type="checkbox" checked=""/>
+stat</li>
+<li><input disabled="" type="checkbox" checked=""/>
 read</li>
 <li><input disabled="" type="checkbox" checked=""/>
 write</li>
 <li><input disabled="" type="checkbox" checked=""/>
+create_dir</li>
+<li><input disabled="" type="checkbox" checked=""/>
+delete</li>
+<li><input disabled="" type="checkbox"/>
+copy</li>
+<li><input disabled="" type="checkbox"/>
+rename</li>
+<li><input disabled="" type="checkbox" checked=""/>
 list</li>
 <li><input disabled="" type="checkbox"/>
 <del>scan</del></li>
@@ -77,17 +87,17 @@ 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#140-168">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#160-167">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#170-214">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 [...]
     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'>Construct a builder from given iterator.</div></details><details class="toggle method-toggle" open><summary><section id="method.from_env" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/types/builder.rs.html#57-71">source</a><a href="#method.from_env" 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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-HdfsBuilder" class="impl"><a class="srclink rightside" href="../../src [...]
+    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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-HdfsBuilder" class="impl"><a class="srclink rightside" href="../../src [...]
     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 166cf7d4..a2719018 100644
--- a/docs/rust/opendal/services/struct.Http.html
+++ b/docs/rust/opendal/services/struct.Http.html
@@ -1,12 +1,22 @@
-<!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>
 <li><input disabled="" type="checkbox" checked=""/>
+stat</li>
+<li><input disabled="" type="checkbox" checked=""/>
 read</li>
 <li><input disabled="" type="checkbox"/>
 <del>write</del></li>
 <li><input disabled="" type="checkbox"/>
+<del>create_dir</del></li>
+<li><input disabled="" type="checkbox"/>
+<del>delete</del></li>
+<li><input disabled="" type="checkbox"/>
+<del>copy</del></li>
+<li><input disabled="" type="checkbox"/>
+<del>rename</del></li>
+<li><input disabled="" type="checkbox"/>
 <del>list</del></li>
 <li><input disabled="" type="checkbox"/>
 <del>scan</del></li>
@@ -39,22 +49,22 @@ 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#101-166">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#106-171">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#118-123">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#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 [...]
 <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#128-133">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#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 [...]
 <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#138-143">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#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 [...]
 <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#146-154">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#162-165">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#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 [...]
 <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#168-226">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#173-231">source</a><a href="#impl-Builder-for-HttpBuilder" class="anchor">§</a><h [...]
     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'>Construct a builder from given iterator.</div></details><details class="toggle method-toggle" open><summary><section id="method.from_env" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/types/builder.rs.html#57-71">source</a><a href="#method.from_env" 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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-HttpBuilder" class="impl"><a class="srclink rightside" href="../../src [...]
+    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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-HttpBuilder" class="impl"><a class="srclink rightside" href="../../src [...]
     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 27081eb6..d704c5b5 100644
--- a/docs/rust/opendal/services/struct.Ipfs.html
+++ b/docs/rust/opendal/services/struct.Ipfs.html
@@ -1,11 +1,21 @@
-<!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>
 <li><input disabled="" type="checkbox" checked=""/>
+stat</li>
+<li><input disabled="" type="checkbox" checked=""/>
 read</li>
 <li><input disabled="" type="checkbox"/>
 <del>write</del></li>
+<li><input disabled="" type="checkbox"/>
+<del>create_dir</del></li>
+<li><input disabled="" type="checkbox"/>
+<del>delete</del></li>
+<li><input disabled="" type="checkbox"/>
+<del>copy</del></li>
+<li><input disabled="" type="checkbox"/>
+<del>rename</del></li>
 <li><input disabled="" type="checkbox" checked=""/>
 list</li>
 <li><input disabled="" type="checkbox"/>
@@ -44,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#91-137">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#96-142">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#118-125">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#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 [...]
 <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>
@@ -61,13 +71,13 @@ 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#133-136">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#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 [...]
 <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#139-189">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#144-194">source</a><a href="#impl-Builder-for-IpfsBuilder" class="anchor">§</a><h [...]
     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'>Construct a builder from given iterator.</div></details><details class="toggle method-toggle" open><summary><section id="method.from_env" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/types/builder.rs.html#57-71">source</a><a href="#method.from_env" 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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-IpfsBuilder" class="impl"><a class="srclink rightside" href="../../src [...]
+    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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-IpfsBuilder" class="impl"><a class="srclink rightside" href="../../src [...]
     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.Memcached.html b/docs/rust/opendal/services/struct.Memcached.html
index 56e64363..f5d336fd 100644
--- a/docs/rust/opendal/services/struct.Memcached.html
+++ b/docs/rust/opendal/services/struct.Memcached.html
@@ -1,11 +1,21 @@
-<!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="Memcached service support."><title>Memcached 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="../../st [...]
+<!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="Memcached service support."><title>Memcached 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="../../st [...]
 <h2 id="capabilities"><a href="#capabilities">Capabilities</a></h2>
 <p>This service can be used to:</p>
 <ul>
 <li><input disabled="" type="checkbox" checked=""/>
+stat</li>
+<li><input disabled="" type="checkbox" checked=""/>
 read</li>
 <li><input disabled="" type="checkbox" checked=""/>
 write</li>
+<li><input disabled="" type="checkbox" checked=""/>
+create_dir</li>
+<li><input disabled="" type="checkbox" checked=""/>
+delete</li>
+<li><input disabled="" type="checkbox"/>
+copy</li>
+<li><input disabled="" type="checkbox"/>
+rename</li>
 <li><input disabled="" type="checkbox"/>
 <del>list</del></li>
 <li><input disabled="" type="checkbox"/>
@@ -38,14 +48,14 @@ blocking</li>
     <span class="kw">let _</span>: 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-MemcachedBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/memcached/backend.rs.html#87-113">source</a><a href="#impl-MemcachedBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struc [...]
+</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-MemcachedBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/memcached/backend.rs.html#92-118">source</a><a href="#impl-MemcachedBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struc [...]
 <p>For example: “tcp://localhost:11211”</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.root" class="method"><a class="srclink rightside" href="../../src/opendal/services/memcached/backend.rs.html#101-106">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.ref [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.root" class="method"><a class="srclink rightside" href="../../src/opendal/services/memcached/backend.rs.html#106-111">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.ref [...]
 <p>default: “/”</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.default_ttl" class="method"><a class="srclink rightside" href="../../src/opendal/services/memcached/backend.rs.html#109-112">source</a><h4 class="code-header">pub fn <a href="#method.default_ttl" class="fn">default_ttl</a>(&amp;mut self, ttl: <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; <a class="primit [...]
-</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-MemcachedBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/memcached/backend.rs.html#115-192">source</a><a href="#impl-Builder-for-MemcachedBuilder" class=" [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.default_ttl" class="method"><a class="srclink rightside" href="../../src/opendal/services/memcached/backend.rs.html#114-117">source</a><h4 class="code-header">pub fn <a href="#method.default_ttl" class="fn">default_ttl</a>(&amp;mut self, ttl: <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; <a class="primit [...]
+</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-MemcachedBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/memcached/backend.rs.html#120-197">source</a><a href="#impl-Builder-for-MemcachedBuilder" 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'>Construct a builder from given iterator.</div></details><details class="toggle method-toggle" open><summary><section id="method.from_env" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/types/builder.rs.html#57-71">source</a><a href="#method.from_env" 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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-MemcachedBuilder" class="impl"><a class="srclink rightside" href="../. [...]
+    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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-MemcachedBuilder" class="impl"><a class="srclink rightside" href="../. [...]
     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.Memory.html b/docs/rust/opendal/services/struct.Memory.html
index 1ce87d3f..f94d61d6 100644
--- a/docs/rust/opendal/services/struct.Memory.html
+++ b/docs/rust/opendal/services/struct.Memory.html
@@ -1,20 +1,34 @@
-<!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="In memory service support. (BTreeMap Based)"><title>Memory 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  [...]
+<!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="In memory service support. (BTreeMap Based)"><title>Memory 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  [...]
 <h2 id="capabilities"><a href="#capabilities">Capabilities</a></h2>
 <p>This service can be used to:</p>
 <ul>
 <li><input disabled="" type="checkbox" checked=""/>
-get</li>
+stat</li>
 <li><input disabled="" type="checkbox" checked=""/>
-set</li>
+read</li>
+<li><input disabled="" type="checkbox" checked=""/>
+write</li>
+<li><input disabled="" type="checkbox" checked=""/>
+create_dir</li>
 <li><input disabled="" type="checkbox" checked=""/>
 delete</li>
+<li><input disabled="" type="checkbox"/>
+copy</li>
+<li><input disabled="" type="checkbox"/>
+rename</li>
+<li><input disabled="" type="checkbox"/>
+list</li>
 <li><input disabled="" type="checkbox" checked=""/>
 scan</li>
+<li><input disabled="" type="checkbox"/>
+presign</li>
+<li><input disabled="" type="checkbox"/>
+blocking</li>
 </ul>
-</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-MemoryBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/memory/backend.rs.html#43-49">source</a><a href="#impl-MemoryBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Memory.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-MemoryBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/memory/backend.rs.html#51-70">source</a><a href="#impl-Builder-for-MemoryBuilder" 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-MemoryBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/memory/backend.rs.html#50-56">source</a><a href="#impl-MemoryBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Memory.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-MemoryBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/memory/backend.rs.html#58-77">source</a><a href="#impl-Builder-for-MemoryBuilder" 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'>Construct a builder from given iterator.</div></details><details class="toggle method-toggle" open><summary><section id="method.from_env" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/types/builder.rs.html#57-71">source</a><a href="#method.from_env" 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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Default-for-MemoryBuilder" class="impl"><a class="srclink rightside" href="../.. [...]
+    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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Default-for-MemoryBuilder" class="impl"><a class="srclink rightside" href="../.. [...]
     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.Moka.html b/docs/rust/opendal/services/struct.Moka.html
index c9f6027f..39a90474 100644
--- a/docs/rust/opendal/services/struct.Moka.html
+++ b/docs/rust/opendal/services/struct.Moka.html
@@ -1,30 +1,44 @@
-<!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="moka backend support."><title>Moka 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="moka backend support."><title>Moka 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>
 <p>This service can be used to:</p>
 <ul>
 <li><input disabled="" type="checkbox" checked=""/>
-get</li>
+stat</li>
 <li><input disabled="" type="checkbox" checked=""/>
-set</li>
+read</li>
+<li><input disabled="" type="checkbox" checked=""/>
+write</li>
+<li><input disabled="" type="checkbox" checked=""/>
+create_dir</li>
 <li><input disabled="" type="checkbox" checked=""/>
 delete</li>
 <li><input disabled="" type="checkbox"/>
-~~ scan ~~</li>
+copy</li>
+<li><input disabled="" type="checkbox"/>
+rename</li>
+<li><input disabled="" type="checkbox"/>
+list</li>
+<li><input disabled="" type="checkbox"/>
+<del>scan</del></li>
+<li><input disabled="" type="checkbox"/>
+presign</li>
+<li><input disabled="" type="checkbox"/>
+blocking</li>
 </ul>
-</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-MokaBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/moka/backend.rs.html#66-121">source</a><a href="#impl-MokaBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Moka.html" ti [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.max_capacity" class="method"><a class="srclink rightside" href="../../src/opendal/services/moka/backend.rs.html#78-83">source</a><h4 class="code-header">pub fn <a href="#method.max_capacity" class="fn">max_capacity</a>(&amp;mut self, v: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.u64.html">u64</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/prim [...]
+</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-MokaBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/moka/backend.rs.html#73-128">source</a><a href="#impl-MokaBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Moka.html" ti [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.max_capacity" class="method"><a class="srclink rightside" href="../../src/opendal/services/moka/backend.rs.html#85-90">source</a><h4 class="code-header">pub fn <a href="#method.max_capacity" class="fn">max_capacity</a>(&amp;mut self, v: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.u64.html">u64</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/prim [...]
 <p>Refer to <a href="https://docs.rs/moka/latest/moka/sync/struct.CacheBuilder.html#method.max_capacity"><code>moka::sync::CacheBuilder::max_capacity</code></a></p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.time_to_live" class="method"><a class="srclink rightside" href="../../src/opendal/services/moka/backend.rs.html#88-93">source</a><h4 class="code-header">pub fn <a href="#method.time_to_live" class="fn">time_to_live</a>(&amp;mut self, v: <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; <a class="primitive" h [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.time_to_live" class="method"><a class="srclink rightside" href="../../src/opendal/services/moka/backend.rs.html#95-100">source</a><h4 class="code-header">pub fn <a href="#method.time_to_live" class="fn">time_to_live</a>(&amp;mut self, v: <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; <a class="primitive"  [...]
 <p>Refer to <a href="https://docs.rs/moka/latest/moka/sync/struct.CacheBuilder.html#method.time_to_live"><code>moka::sync::CacheBuilder::time_to_live</code></a></p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.time_to_idle" class="method"><a class="srclink rightside" href="../../src/opendal/services/moka/backend.rs.html#98-103">source</a><h4 class="code-header">pub fn <a href="#method.time_to_idle" class="fn">time_to_idle</a>(&amp;mut self, v: <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; <a class="primitive"  [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.time_to_idle" class="method"><a class="srclink rightside" href="../../src/opendal/services/moka/backend.rs.html#105-110">source</a><h4 class="code-header">pub fn <a href="#method.time_to_idle" class="fn">time_to_idle</a>(&amp;mut self, v: <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; <a class="primitive" [...]
 <p>Refer to <a href="https://docs.rs/moka/latest/moka/sync/struct.CacheBuilder.html#method.time_to_idle"><code>moka::sync::CacheBuilder::time_to_idle</code></a></p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.segments" class="method"><a class="srclink rightside" href="../../src/opendal/services/moka/backend.rs.html#108-112">source</a><h4 class="code-header">pub fn <a href="#method.segments" class="fn">segments</a>(&amp;mut self, v: <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-lang.org/1.69.0/std/primitive. [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.segments" class="method"><a class="srclink rightside" href="../../src/opendal/services/moka/backend.rs.html#115-119">source</a><h4 class="code-header">pub fn <a href="#method.segments" class="fn">segments</a>(&amp;mut self, v: <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-lang.org/1.69.0/std/primitive. [...]
 <p>Refer to <a href="https://docs.rs/moka/latest/moka/sync/struct.CacheBuilder.html#method.segments"><code>moka::sync::CacheBuilder::segments</code></a></p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.thread_pool_enabled" class="method"><a class="srclink rightside" href="../../src/opendal/services/moka/backend.rs.html#117-120">source</a><h4 class="code-header">pub fn <a href="#method.thread_pool_enabled" class="fn">thread_pool_enabled</a>(&amp;mut self, v: <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 [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.thread_pool_enabled" class="method"><a class="srclink rightside" href="../../src/opendal/services/moka/backend.rs.html#124-127">source</a><h4 class="code-header">pub fn <a href="#method.thread_pool_enabled" class="fn">thread_pool_enabled</a>(&amp;mut self, v: <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 [...]
 <p>Refer to <a href="https://docs.rs/moka/latest/moka/sync/struct.CacheBuilder.html#method.thread_pool_enabled"><code>moka::sync::CacheBuilder::thread_pool_enabled</code></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-MokaBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/moka/backend.rs.html#123-175">source</a><a href="#impl-Builder-for-MokaBuilder" 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-MokaBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/moka/backend.rs.html#130-182">source</a><a href="#impl-Builder-for-MokaBuilder" class="anchor">§</a><h [...]
     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'>Construct a builder from given iterator.</div></details><details class="toggle method-toggle" open><summary><section id="method.from_env" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/types/builder.rs.html#57-71">source</a><a href="#method.from_env" 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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-MokaBuilder" class="impl"><a class="srclink rightside" href="../../src [...]
+    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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-MokaBuilder" class="impl"><a class="srclink rightside" href="../../src [...]
     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 283735e7..29ea20bc 100644
--- a/docs/rust/opendal/services/struct.Obs.html
+++ b/docs/rust/opendal/services/struct.Obs.html
@@ -1,13 +1,21 @@
-<!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>
 <li><input disabled="" type="checkbox" checked=""/>
+stat</li>
+<li><input disabled="" type="checkbox" checked=""/>
 read</li>
 <li><input disabled="" type="checkbox" checked=""/>
 write</li>
 <li><input disabled="" type="checkbox" checked=""/>
+create_dir</li>
+<li><input disabled="" type="checkbox" checked=""/>
+delete</li>
+<li><input disabled="" type="checkbox" checked=""/>
 copy</li>
+<li><input disabled="" type="checkbox"/>
+rename</li>
 <li><input disabled="" type="checkbox" checked=""/>
 list</li>
 <li><input disabled="" type="checkbox" checked=""/>
@@ -50,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#113-183">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#117-187">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#133-139">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#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 [...]
 <p>Both huaweicloud default domain and user domain endpoints are allowed.
 Please DO NOT add the bucket name to the endpoint.</p>
 <ul>
@@ -60,25 +68,25 @@ 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#144-150">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#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 [...]
 <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#155-161">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#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 [...]
 <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#165-171">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#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 [...]
 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#179-182">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#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 [...]
 <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#185-286">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#189-290">source</a><a href="#impl-Builder-for-ObsBuilder" class="anchor">§</a><h3 c [...]
     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'>Construct a builder from given iterator.</div></details><details class="toggle method-toggle" open><summary><section id="method.from_env" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/types/builder.rs.html#57-71">source</a><a href="#method.from_env" 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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-ObsBuilder" class="impl"><a class="srclink rightside" href="../../src/ [...]
+    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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-ObsBuilder" class="impl"><a class="srclink rightside" href="../../src/ [...]
     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 79bc7bb5..5d023cbc 100644
--- a/docs/rust/opendal/services/struct.Oss.html
+++ b/docs/rust/opendal/services/struct.Oss.html
@@ -1,18 +1,26 @@
-<!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>
 <li><input disabled="" type="checkbox" checked=""/>
+stat</li>
+<li><input disabled="" type="checkbox" checked=""/>
 read</li>
 <li><input disabled="" type="checkbox" checked=""/>
 write</li>
 <li><input disabled="" type="checkbox" checked=""/>
+create_dir</li>
+<li><input disabled="" type="checkbox" checked=""/>
+delete</li>
+<li><input disabled="" type="checkbox" checked=""/>
 copy</li>
+<li><input disabled="" type="checkbox"/>
+rename</li>
 <li><input disabled="" type="checkbox" checked=""/>
 list</li>
 <li><input disabled="" type="checkbox" checked=""/>
 scan</li>
-<li><input disabled="" type="checkbox"/>
+<li><input disabled="" type="checkbox" checked=""/>
 presign</li>
 <li><input disabled="" type="checkbox"/>
 blocking</li>
@@ -65,11 +73,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#142-306">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#146-310">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#157-161">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#164-171">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#181-188">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#161-165">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#168-175">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#185-192">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>
@@ -77,21 +85,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#194-200">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#198-204">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#206-212">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#210-216">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#220-223">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#224-227">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#280-285">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#284-289">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:
@@ -105,14 +113,14 @@ 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#292-297">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#296-301">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#301-305">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#305-309">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#308-426">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#312-430">source</a><a href="#impl-Builder-for-OssBuilder" class="anchor">§</a><h3 c [...]
     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'>Construct a builder from given iterator.</div></details><details class="toggle method-toggle" open><summary><section id="method.from_env" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/types/builder.rs.html#57-71">source</a><a href="#method.from_env" 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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-OssBuilder" class="impl"><a class="srclink rightside" href="../../src/ [...]
+    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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-OssBuilder" class="impl"><a class="srclink rightside" href="../../src/ [...]
     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.Redis.html b/docs/rust/opendal/services/struct.Redis.html
index e18dcc9a..3d8d65a6 100644
--- a/docs/rust/opendal/services/struct.Redis.html
+++ b/docs/rust/opendal/services/struct.Redis.html
@@ -1,19 +1,58 @@
-<!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="Redis services support."><title>Redis 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="Redis services support."><title>Redis 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>
 <li><input disabled="" type="checkbox" checked=""/>
-read</li>
+<p>read</p>
+</li>
 <li><input disabled="" type="checkbox" checked=""/>
-write</li>
+<p>write</p>
+</li>
 <li><input disabled="" type="checkbox"/>
-<del>list</del></li>
+<p><del>list</del></p>
+</li>
 <li><input disabled="" type="checkbox"/>
-scan</li>
+<p>scan</p>
+</li>
 <li><input disabled="" type="checkbox"/>
-<del>presign</del></li>
+<p><del>presign</del></p>
+</li>
 <li><input disabled="" type="checkbox"/>
-blocking</li>
+<p>blocking</p>
+</li>
+<li><input disabled="" type="checkbox" checked=""/>
+<p>stat</p>
+</li>
+<li><input disabled="" type="checkbox" checked=""/>
+<p>read</p>
+</li>
+<li><input disabled="" type="checkbox" checked=""/>
+<p>write</p>
+</li>
+<li><input disabled="" type="checkbox" checked=""/>
+<p>create_dir</p>
+</li>
+<li><input disabled="" type="checkbox" checked=""/>
+<p>delete</p>
+</li>
+<li><input disabled="" type="checkbox"/>
+<p>copy</p>
+</li>
+<li><input disabled="" type="checkbox"/>
+<p>rename</p>
+</li>
+<li><input disabled="" type="checkbox"/>
+<p><del>list</del></p>
+</li>
+<li><input disabled="" type="checkbox"/>
+<p>scan</p>
+</li>
+<li><input disabled="" type="checkbox"/>
+<p><del>presign</del></p>
+</li>
+<li><input disabled="" type="checkbox"/>
+<p>blocking</p>
+</li>
 </ul>
 <h2 id="configuration"><a href="#configuration">Configuration</a></h2>
 <ul>
@@ -39,26 +78,26 @@ blocking</li>
     <span class="kw">let _</span>: 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-RedisBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/redis/backend.rs.html#129-188">source</a><a href="#impl-RedisBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Redis.htm [...]
+</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-RedisBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/redis/backend.rs.html#141-200">source</a><a href="#impl-RedisBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Redis.htm [...]
 <p>currently supported schemes:</p>
 <ul>
 <li>no scheme: will be seen as “tcp”</li>
 <li>“tcp” or “redis”: unsecured redis connections</li>
 <li>“unix” or “redis+unix”: unix socket connection</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.username" class="method"><a class="srclink rightside" href="../../src/opendal/services/redis/backend.rs.html#146-151">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 [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.username" class="method"><a class="srclink rightside" href="../../src/opendal/services/redis/backend.rs.html#158-163">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 [...]
 <p>default: no username</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.password" class="method"><a class="srclink rightside" href="../../src/opendal/services/redis/backend.rs.html#156-161">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 [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.password" class="method"><a class="srclink rightside" href="../../src/opendal/services/redis/backend.rs.html#168-173">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 [...]
 <p>default: no password</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.db" class="method"><a class="srclink rightside" href="../../src/opendal/services/redis/backend.rs.html#166-169">source</a><h4 class="code-header">pub fn <a href="#method.db" class="fn">db</a>(&amp;mut self, db: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.i64.html">i64</a>) -&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.db" class="method"><a class="srclink rightside" href="../../src/opendal/services/redis/backend.rs.html#178-181">source</a><h4 class="code-header">pub fn <a href="#method.db" class="fn">db</a>(&amp;mut self, db: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.i64.html">i64</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.reference.html">&amp [...]
 <p>default: 0</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.default_ttl" class="method"><a class="srclink rightside" href="../../src/opendal/services/redis/backend.rs.html#174-177">source</a><h4 class="code-header">pub fn <a href="#method.default_ttl" class="fn">default_ttl</a>(&amp;mut self, ttl: <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; <a class="primitive" [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.default_ttl" class="method"><a class="srclink rightside" href="../../src/opendal/services/redis/backend.rs.html#186-189">source</a><h4 class="code-header">pub fn <a href="#method.default_ttl" class="fn">default_ttl</a>(&amp;mut self, ttl: <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; <a class="primitive" [...]
 <p>If set, we will specify <code>EX</code> for write operations.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.root" class="method"><a class="srclink rightside" href="../../src/opendal/services/redis/backend.rs.html#182-187">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.referen [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.root" class="method"><a class="srclink rightside" href="../../src/opendal/services/redis/backend.rs.html#194-199">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.referen [...]
 <p>default: “/”</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-RedisBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/redis/backend.rs.html#190-277">source</a><a href="#impl-Builder-for-RedisBuilder" 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-RedisBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/redis/backend.rs.html#202-289">source</a><a href="#impl-Builder-for-RedisBuilder" class="anchor">§</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'>Construct a builder from given iterator.</div></details><details class="toggle method-toggle" open><summary><section id="method.from_env" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/types/builder.rs.html#57-71">source</a><a href="#method.from_env" 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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-RedisBuilder" class="impl"><a class="srclink rightside" href="../../sr [...]
+    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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-RedisBuilder" class="impl"><a class="srclink rightside" href="../../sr [...]
     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.Rocksdb.html b/docs/rust/opendal/services/struct.Rocksdb.html
index c8496696..30df2d9e 100644
--- a/docs/rust/opendal/services/struct.Rocksdb.html
+++ b/docs/rust/opendal/services/struct.Rocksdb.html
@@ -1,14 +1,24 @@
-<!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="Rocksdb service support."><title>Rocksdb 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 [...]
+<!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="Rocksdb service support."><title>Rocksdb 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 [...]
 <h2 id="capabilities"><a href="#capabilities">Capabilities</a></h2>
 <p>This service can be used to:</p>
 <ul>
 <li><input disabled="" type="checkbox" checked=""/>
+stat</li>
+<li><input disabled="" type="checkbox" checked=""/>
 read</li>
 <li><input disabled="" type="checkbox" checked=""/>
 write</li>
+<li><input disabled="" type="checkbox" checked=""/>
+create_dir</li>
+<li><input disabled="" type="checkbox" checked=""/>
+delete</li>
 <li><input disabled="" type="checkbox"/>
-<del>list</del></li>
+copy</li>
 <li><input disabled="" type="checkbox"/>
+rename</li>
+<li><input disabled="" type="checkbox"/>
+<del>list</del></li>
+<li><input disabled="" type="checkbox" checked=""/>
 scan</li>
 <li><input disabled="" type="checkbox"/>
 <del>presign</del></li>
@@ -47,12 +57,12 @@ may be outdated and incompatible.</p>
     <span class="kw">let _</span>: 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-RocksdbBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/rocksdb/backend.rs.html#94-110">source</a><a href="#impl-RocksdbBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Rock [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.root" class="method"><a class="srclink rightside" href="../../src/opendal/services/rocksdb/backend.rs.html#104-109">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.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-RocksdbBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/rocksdb/backend.rs.html#99-115">source</a><a href="#impl-RocksdbBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Rock [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.root" class="method"><a class="srclink rightside" href="../../src/opendal/services/rocksdb/backend.rs.html#109-114">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.refer [...]
 <p>default: “/”</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-RocksdbBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/rocksdb/backend.rs.html#112-138">source</a><a href="#impl-Builder-for-RocksdbBuilder" 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-RocksdbBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/rocksdb/backend.rs.html#117-143">source</a><a href="#impl-Builder-for-RocksdbBuilder" 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'>Construct a builder from given iterator.</div></details><details class="toggle method-toggle" open><summary><section id="method.from_env" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/types/builder.rs.html#57-71">source</a><a href="#method.from_env" 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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-RocksdbBuilder" class="impl"><a class="srclink rightside" href="../../ [...]
+    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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-RocksdbBuilder" class="impl"><a class="srclink rightside" href="../../ [...]
     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 1c997a9a..90773a85 100644
--- a/docs/rust/opendal/services/struct.S3.html
+++ b/docs/rust/opendal/services/struct.S3.html
@@ -1,14 +1,22 @@
-<!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>
 <ul>
 <li><input disabled="" type="checkbox" checked=""/>
+stat</li>
+<li><input disabled="" type="checkbox" checked=""/>
 read</li>
 <li><input disabled="" type="checkbox" checked=""/>
 write</li>
 <li><input disabled="" type="checkbox" checked=""/>
+create_dir</li>
+<li><input disabled="" type="checkbox" checked=""/>
+delete</li>
+<li><input disabled="" type="checkbox" checked=""/>
 copy</li>
+<li><input disabled="" type="checkbox"/>
+rename</li>
 <li><input disabled="" type="checkbox" checked=""/>
 list</li>
 <li><input disabled="" type="checkbox" checked=""/>
@@ -283,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#329-729">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#333-733">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#344-348">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#361-368">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#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 [...]
 <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>
@@ -296,24 +304,24 @@ 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#374-380">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#378-384">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 [...]
 <ul>
 <li>If region is set, we will take user’s input first.</li>
 <li>If not, we will use <code>us-east-1</code> 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/s3/backend.rs.html#386-392">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#390-396">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#398-404">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#402-408">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#407-413">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#416-422">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#436-442">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#411-417">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#420-426">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#440-446">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>
@@ -326,13 +334,13 @@ will prepend “https://” before it.</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#454-460">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#458-464">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#479-485">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#483-489">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>
@@ -347,13 +355,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#497-503">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#501-507">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#518-524">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#522-528">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>
@@ -361,66 +369,66 @@ 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#538-544">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#542-548">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#551-554">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#555-558">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#561-568">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#565-572">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#575-578">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#579-582">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#585-595">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#589-599">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#602-607">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#606-611">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#616-619">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#620-623">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#625-628">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#629-632">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#632-635">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#636-639">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#642-645">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#646-649">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#648-651">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#652-655">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#659-662">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#663-666">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#724-728">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#728-732">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#731-936">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#735-940">source</a><a href="#impl-Builder-for-S3Builder" class="anchor">§</a><h3 clas [...]
     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'>Construct a builder from given iterator.</div></details><details class="toggle method-toggle" open><summary><section id="method.from_env" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/types/builder.rs.html#57-71">source</a><a href="#method.from_env" 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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-S3Builder" class="impl"><a class="srclink rightside" href="../../src/o [...]
+    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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-S3Builder" class="impl"><a class="srclink rightside" href="../../src/o [...]
     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 a7548823..d9d419c8 100644
--- a/docs/rust/opendal/services/struct.Sftp.html
+++ b/docs/rust/opendal/services/struct.Sftp.html
@@ -1,19 +1,58 @@
-<!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 [...]
 <h2 id="capabilities"><a href="#capabilities">Capabilities</a></h2>
 <p>This service can be used to:</p>
 <ul>
 <li><input disabled="" type="checkbox" checked=""/>
-read</li>
+<p>read</p>
+</li>
 <li><input disabled="" type="checkbox" checked=""/>
-write</li>
+<p>write</p>
+</li>
 <li><input disabled="" type="checkbox" checked=""/>
-list</li>
+<p>list</p>
+</li>
 <li><input disabled="" type="checkbox"/>
-<del>scan</del></li>
+<p><del>scan</del></p>
+</li>
 <li><input disabled="" type="checkbox"/>
-<del>presign</del></li>
+<p><del>presign</del></p>
+</li>
 <li><input disabled="" type="checkbox"/>
-blocking</li>
+<p>blocking</p>
+</li>
+<li><input disabled="" type="checkbox" checked=""/>
+<p>stat</p>
+</li>
+<li><input disabled="" type="checkbox" checked=""/>
+<p>read</p>
+</li>
+<li><input disabled="" type="checkbox" checked=""/>
+<p>write</p>
+</li>
+<li><input disabled="" type="checkbox" checked=""/>
+<p>create_dir</p>
+</li>
+<li><input disabled="" type="checkbox" checked=""/>
+<p>delete</p>
+</li>
+<li><input disabled="" type="checkbox"/>
+<p>copy</p>
+</li>
+<li><input disabled="" type="checkbox"/>
+<p>rename</p>
+</li>
+<li><input disabled="" type="checkbox" checked=""/>
+<p>list</p>
+</li>
+<li><input disabled="" type="checkbox"/>
+<p><del>scan</del></p>
+</li>
+<li><input disabled="" type="checkbox"/>
+<p><del>presign</del></p>
+</li>
+<li><input disabled="" type="checkbox"/>
+<p>blocking</p>
+</li>
 </ul>
 <h2 id="configuration"><a href="#configuration">Configuration</a></h2>
 <ul>
@@ -41,13 +80,13 @@ 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#109-153">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#122-130">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#133-141">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#144-152">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></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#155-198">source</a><a href="#impl-Builder-for-SftpBuilder" class="anchor">§</a><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-SftpBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/sftp/backend.rs.html#121-165">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></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#167-210">source</a><a href="#impl-Builder-for-SftpBuilder" class="anchor">§</a><h [...]
     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'>Construct a builder from given iterator.</div></details><details class="toggle method-toggle" open><summary><section id="method.from_env" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/types/builder.rs.html#57-71">source</a><a href="#method.from_env" 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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-SftpBuilder" class="impl"><a class="srclink rightside" href="../../src [...]
+    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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-SftpBuilder" class="impl"><a class="srclink rightside" href="../../src [...]
     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.Sled.html b/docs/rust/opendal/services/struct.Sled.html
index 75771675..6dc57b36 100644
--- a/docs/rust/opendal/services/struct.Sled.html
+++ b/docs/rust/opendal/services/struct.Sled.html
@@ -1,19 +1,58 @@
-<!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="Sled service support."><title>Sled 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="Sled service support."><title>Sled 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>
 <p>This service can be used to:</p>
 <ul>
 <li><input disabled="" type="checkbox" checked=""/>
-read</li>
+<p>read</p>
+</li>
 <li><input disabled="" type="checkbox" checked=""/>
-write</li>
+<p>write</p>
+</li>
 <li><input disabled="" type="checkbox"/>
-<del>list</del></li>
+<p><del>list</del></p>
+</li>
 <li><input disabled="" type="checkbox"/>
-scan</li>
+<p>scan</p>
+</li>
 <li><input disabled="" type="checkbox"/>
-<del>presign</del></li>
+<p><del>presign</del></p>
+</li>
 <li><input disabled="" type="checkbox" checked=""/>
-blocking</li>
+<p>blocking</p>
+</li>
+<li><input disabled="" type="checkbox" checked=""/>
+<p>stat</p>
+</li>
+<li><input disabled="" type="checkbox" checked=""/>
+<p>read</p>
+</li>
+<li><input disabled="" type="checkbox" checked=""/>
+<p>write</p>
+</li>
+<li><input disabled="" type="checkbox" checked=""/>
+<p>create_dir</p>
+</li>
+<li><input disabled="" type="checkbox" checked=""/>
+<p>delete</p>
+</li>
+<li><input disabled="" type="checkbox"/>
+<p>copy</p>
+</li>
+<li><input disabled="" type="checkbox"/>
+<p>rename</p>
+</li>
+<li><input disabled="" type="checkbox"/>
+<p><del>list</del></p>
+</li>
+<li><input disabled="" type="checkbox"/>
+<p>scan</p>
+</li>
+<li><input disabled="" type="checkbox"/>
+<p><del>presign</del></p>
+</li>
+<li><input disabled="" type="checkbox" checked=""/>
+<p>blocking</p>
+</li>
 </ul>
 <h2 id="configuration"><a href="#configuration">Configuration</a></h2>
 <ul>
@@ -33,11 +72,11 @@ 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-SledBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/sled/backend.rs.html#75-87">source</a><a href="#impl-SledBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Sled.html" tit [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.root" class="method"><a class="srclink rightside" href="../../src/opendal/services/sled/backend.rs.html#83-86">source</a><h4 class="code-header">pub fn <a href="#method.root" class="fn">root</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.org/1.69.0/std/primitive.reference. [...]
-</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-SledBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/sled/backend.rs.html#89-121">source</a><a href="#impl-Builder-for-SledBuilder" class="anchor">§</a><h3 [...]
+</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-SledBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/sled/backend.rs.html#87-99">source</a><a href="#impl-SledBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Sled.html" tit [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.root" class="method"><a class="srclink rightside" href="../../src/opendal/services/sled/backend.rs.html#95-98">source</a><h4 class="code-header">pub fn <a href="#method.root" class="fn">root</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.org/1.69.0/std/primitive.reference. [...]
+</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-SledBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/sled/backend.rs.html#101-133">source</a><a href="#impl-Builder-for-SledBuilder" class="anchor">§</a><h [...]
     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'>Construct a builder from given iterator.</div></details><details class="toggle method-toggle" open><summary><section id="method.from_env" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/types/builder.rs.html#57-71">source</a><a href="#method.from_env" 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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Default-for-SledBuilder" class="impl"><a class="srclink rightside" href="../../s [...]
+    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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Default-for-SledBuilder" class="impl"><a class="srclink rightside" href="../../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 [...]
     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 24bc1ea8..a706dbb4 100644
--- a/docs/rust/opendal/services/struct.Supabase.html
+++ b/docs/rust/opendal/services/struct.Supabase.html
@@ -1,13 +1,21 @@
-<!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=""/>
+stat</li>
+<li><input disabled="" type="checkbox" checked=""/>
 read</li>
 <li><input disabled="" type="checkbox" checked=""/>
 write</li>
+<li><input disabled="" type="checkbox" checked=""/>
+create_dir</li>
+<li><input disabled="" type="checkbox" checked=""/>
+delete</li>
 <li><input disabled="" type="checkbox"/>
 copy</li>
 <li><input disabled="" type="checkbox"/>
+rename</li>
+<li><input disabled="" type="checkbox"/>
 list</li>
 <li><input disabled="" type="checkbox"/>
 scan</li>
@@ -45,20 +53,20 @@ 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#103-153">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#107-157">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#118-121">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#126-134">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#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 [...]
 <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#138-141">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#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 [...]
 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#149-152">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#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 [...]
 <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#155-195">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#159-199">source</a><a href="#impl-Builder-for-SupabaseBuilder" class="anc [...]
     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'>Construct a builder from given iterator.</div></details><details class="toggle method-toggle" open><summary><section id="method.from_env" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/types/builder.rs.html#57-71">source</a><a href="#method.from_env" 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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-SupabaseBuilder" class="impl"><a class="srclink rightside" href="../.. [...]
+    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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-SupabaseBuilder" class="impl"><a class="srclink rightside" href="../.. [...]
     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.VercelArtifacts.html b/docs/rust/opendal/services/struct.VercelArtifacts.html
index 16125e31..2d9cc248 100644
--- a/docs/rust/opendal/services/struct.VercelArtifacts.html
+++ b/docs/rust/opendal/services/struct.VercelArtifacts.html
@@ -1,11 +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="Vercel Cache backend support."><title>VercelArtifacts 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="Vercel Cache backend support."><title>VercelArtifacts 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>
+<li><input disabled="" type="checkbox"/>
+stat</li>
 <li><input disabled="" type="checkbox" checked=""/>
 read</li>
 <li><input disabled="" type="checkbox" checked=""/>
 write</li>
+<li><input disabled="" type="checkbox" checked=""/>
+create_dir</li>
+<li><input disabled="" type="checkbox" checked=""/>
+delete</li>
 <li><input disabled="" type="checkbox"/>
 <del>copy</del></li>
 <li><input disabled="" type="checkbox"/>
@@ -39,15 +45,15 @@ 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-VercelArtifactsBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/vercel_artifacts/builder.rs.html#73-92">source</a><a href="#impl-VercelArtifactsBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="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-VercelArtifactsBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/vercel_artifacts/builder.rs.html#76-95">source</a><a href="#impl-VercelArtifactsBuilder" class="anchor">§</a><h3 class="code-header">impl <a class="s [...]
 <p>default: no access token, which leads to failure</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/vercel_artifacts/builder.rs.html#88-91">source</a><h4 class="code-header">pub fn <a href="#method.http_client" class="fn">http_client</a>(&amp;mut self, http_client: <a class="struct" href="../raw/struct.HttpClient.html" title="struct opendal::raw::HttpClient">HttpClient</a>) -&gt; <a class="primitive" href="http [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.http_client" class="method"><a class="srclink rightside" href="../../src/opendal/services/vercel_artifacts/builder.rs.html#91-94">source</a><h4 class="code-header">pub fn <a href="#method.http_client" class="fn">http_client</a>(&amp;mut self, http_client: <a class="struct" href="../raw/struct.HttpClient.html" title="struct opendal::raw::HttpClient">HttpClient</a>) -&gt; <a class="primitive" href="http [...]
 <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-VercelArtifactsBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/vercel_artifacts/builder.rs.html#94-123">source</a><a href="#impl-Builder-for-VercelArtifac [...]
+</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-VercelArtifactsBuilder" class="impl"><a class="srclink rightside" href="../../src/opendal/services/vercel_artifacts/builder.rs.html#97-126">source</a><a href="#impl-Builder-for-VercelArtifac [...]
     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'>Construct a builder from given iterator.</div></details><details class="toggle method-toggle" open><summary><section id="method.from_env" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/types/builder.rs.html#57-71">source</a><a href="#method.from_env" 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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Default-for-VercelArtifactsBuilder" class="impl"><a class="srclink rightside" hr [...]
+    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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Default-for-VercelArtifactsBuilder" class="impl"><a class="srclink rightside" hr [...]
     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 10d17799..25313380 100644
--- a/docs/rust/opendal/services/struct.Wasabi.html
+++ b/docs/rust/opendal/services/struct.Wasabi.html
@@ -1,21 +1,27 @@
-<!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>
 <li><input disabled="" type="checkbox" checked=""/>
+stat</li>
+<li><input disabled="" type="checkbox" checked=""/>
 read</li>
 <li><input disabled="" type="checkbox" checked=""/>
 write</li>
 <li><input disabled="" type="checkbox" checked=""/>
+create_dir</li>
+<li><input disabled="" type="checkbox" checked=""/>
+delete</li>
+<li><input disabled="" type="checkbox" checked=""/>
 copy</li>
 <li><input disabled="" type="checkbox" checked=""/>
+rename</li>
+<li><input disabled="" type="checkbox" checked=""/>
 list</li>
 <li><input disabled="" type="checkbox" checked=""/>
 scan</li>
 <li><input disabled="" type="checkbox" checked=""/>
 presign</li>
-<li><input disabled="" type="checkbox" checked=""/>
-rename</li>
 <li><input disabled="" type="checkbox"/>
 blocking</li>
 </ul>
@@ -206,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#319-696">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#322-699">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#334-338">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#348-355">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#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/ [...]
 <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#361-367">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#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 [...]
 <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#373-379">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#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 [...]
 <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#385-391">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#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- [...]
 <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#394-400">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#403-409">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#418-424">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#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 [...]
 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>
@@ -241,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#436-442">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#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 [...]
 <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#461-467">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#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" [...]
 <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>
@@ -262,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#479-485">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#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 [...]
 <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#500-506">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#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</ [...]
 <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>
@@ -276,62 +282,62 @@ 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#520-526">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#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 [...]
 <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#533-536">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#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. [...]
 <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#543-550">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#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>(
     &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#557-560">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#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 [...]
 <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#567-577">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#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>(
     &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#584-589">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#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. [...]
 <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#598-601">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#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 [...]
 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#607-610">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#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 [...]
 <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#617-620">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#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 [...]
 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#623-626">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#626-629">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#634-637">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#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- [...]
 <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#698-882">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#701-885">source</a><a href="#impl-Builder-for-WasabiBuilder" 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'>Construct a builder from given iterator.</div></details><details class="toggle method-toggle" open><summary><section id="method.from_env" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/types/builder.rs.html#57-71">source</a><a href="#method.from_env" 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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-WasabiBuilder" class="impl"><a class="srclink rightside" href="../../s [...]
+    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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-WasabiBuilder" class="impl"><a class="srclink rightside" href="../../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 [...]
     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 8f868c54..db85180e 100644
--- a/docs/rust/opendal/services/struct.Webdav.html
+++ b/docs/rust/opendal/services/struct.Webdav.html
@@ -1,12 +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="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>
 <li><input disabled="" type="checkbox" checked=""/>
+stat</li>
+<li><input disabled="" type="checkbox" checked=""/>
 read</li>
 <li><input disabled="" type="checkbox" checked=""/>
 write</li>
 <li><input disabled="" type="checkbox" checked=""/>
+create_dir</li>
+<li><input disabled="" type="checkbox" checked=""/>
+delete</li>
+<li><input disabled="" type="checkbox" checked=""/>
 copy</li>
 <li><input disabled="" type="checkbox" checked=""/>
 rename</li>
@@ -46,22 +52,22 @@ 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#109-174">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#112-177">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#126-131">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#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/ [...]
 <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#136-141">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#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/ [...]
 <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#146-151">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#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 [...]
 <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#154-162">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#170-173">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#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- [...]
 <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#176-234">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#179-237">source</a><a href="#impl-Builder-for-WebdavBuilder" 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'>Construct a builder from given iterator.</div></details><details class="toggle method-toggle" open><summary><section id="method.from_env" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/types/builder.rs.html#57-71">source</a><a href="#method.from_env" 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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-WebdavBuilder" class="impl"><a class="srclink rightside" href="../../s [...]
+    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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-WebdavBuilder" class="impl"><a class="srclink rightside" href="../../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 [...]
     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 ef1fddc6..29a4711a 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>
@@ -8,10 +8,20 @@
 <p>This service can be used to:</p>
 <ul>
 <li><input disabled="" type="checkbox" checked=""/>
+stat</li>
+<li><input disabled="" type="checkbox" checked=""/>
 read</li>
 <li><input disabled="" type="checkbox" checked=""/>
 write</li>
 <li><input disabled="" type="checkbox" checked=""/>
+create_dir</li>
+<li><input disabled="" type="checkbox" checked=""/>
+delete</li>
+<li><input disabled="" type="checkbox"/>
+copy</li>
+<li><input disabled="" type="checkbox"/>
+rename</li>
+<li><input disabled="" type="checkbox" checked=""/>
 list</li>
 <li><input disabled="" type="checkbox"/>
 <del>scan</del></li>
@@ -57,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#122-168">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#127-173">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#148-154">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#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 [...]
 default to <code>http://127.0.0.1:9870</code></p>
 <p>Endpoints should be full uri, e.g.</p>
 <ul>
@@ -70,19 +80,19 @@ 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#162-167">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#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. [...]
 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#170-227">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#175-232">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#171">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#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> =  [...]
     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'>Construct a builder from given iterator.</div></details><details class="toggle method-toggle" open><summary><section id="method.from_env" class="method trait-impl"><a class="srclink rightside" href="../../src/opendal/types/builder.rs.html#57-71">source</a><a href="#method.from_env" 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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-WebhdfsBuilder" class="impl"><a class="srclink rightside" href="../../ [...]
+    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'>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-WebhdfsBuilder" class="impl"><a class="srclink rightside" href="../../ [...]
     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.Capability.html b/docs/rust/opendal/struct.Capability.html
index 0438c3ec..b6472279 100644
--- a/docs/rust/opendal/struct.Capability.html
+++ b/docs/rust/opendal/struct.Capability.html
@@ -17,6 +17,8 @@
     pub write_with_cache_control: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a>,
     pub create_dir: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a>,
     pub delete: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a>,
+    pub copy: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a>,
+    pub rename: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a>,
     pub list: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a>,
     pub list_with_limit: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a>,
     pub list_with_start_after: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a>,
@@ -24,8 +26,6 @@
     pub list_without_delimiter: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a>,
     pub scan: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a>,
     pub scan_with_limit: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a>,
-    pub copy: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a>,
-    pub rename: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a>,
     pub presign: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a>,
     pub presign_read: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a>,
     pub presign_stat: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a>,
@@ -55,7 +55,7 @@ returned by services.</p>
 <li>Operation with sub operations should be named like <code>presign_read</code>.</li>
 <li>Operation with variants should be named like <code>read_can_seek</code>.</li>
 <li>Operation with arguments should be named like <code>read_with_range</code>.</li>
-<li>Operation with limtations should be named like <code>batch_max_operations</code>.</li>
+<li>Operation with limitations should be named like <code>batch_max_operations</code>.</li>
 </ul>
 </div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.stat" class="structfield small-section-header"><a href="#structfield.stat" class="anchor field">§</a><code>stat: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>If operator supports stat natively, it will be true.</p>
 </div><span id="structfield.stat_with_if_match" class="structfield small-section-header"><a href="#structfield.stat_with_if_match" class="anchor field">§</a><code>stat_with_if_match: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>If operator supports stat with if match natively, it will be true.</p>
@@ -79,6 +79,8 @@ be true.</p>
 </div><span id="structfield.write_with_cache_control" class="structfield small-section-header"><a href="#structfield.write_with_cache_control" class="anchor field">§</a><code>write_with_cache_control: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>If operator supports write with cache control natively, it will be true.</p>
 </div><span id="structfield.create_dir" class="structfield small-section-header"><a href="#structfield.create_dir" class="anchor field">§</a><code>create_dir: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>If operator supports create dir natively, it will be true.</p>
 </div><span id="structfield.delete" class="structfield small-section-header"><a href="#structfield.delete" class="anchor field">§</a><code>delete: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>If operator supports delete natively, it will be true.</p>
+</div><span id="structfield.copy" class="structfield small-section-header"><a href="#structfield.copy" class="anchor field">§</a><code>copy: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>If operator supports copy natively, it will be true.</p>
+</div><span id="structfield.rename" class="structfield small-section-header"><a href="#structfield.rename" class="anchor field">§</a><code>rename: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>If operator supports rename natively, it will be true.</p>
 </div><span id="structfield.list" class="structfield small-section-header"><a href="#structfield.list" class="anchor field">§</a><code>list: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>If operator supports list natively, it will be true.</p>
 </div><span id="structfield.list_with_limit" class="structfield small-section-header"><a href="#structfield.list_with_limit" class="anchor field">§</a><code>list_with_limit: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>If backend supports list with limit, it will be true.</p>
 </div><span id="structfield.list_with_start_after" class="structfield small-section-header"><a href="#structfield.list_with_start_after" class="anchor field">§</a><code>list_with_start_after: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>If backend supports list with start after, it will be true.</p>
@@ -86,8 +88,6 @@ be true.</p>
 </div><span id="structfield.list_without_delimiter" class="structfield small-section-header"><a href="#structfield.list_without_delimiter" class="anchor field">§</a><code>list_without_delimiter: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>If backend supports list without delimiter.</p>
 </div><span id="structfield.scan" class="structfield small-section-header"><a href="#structfield.scan" class="anchor field">§</a><code>scan: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>If operator supports scan natively, it will be true.</p>
 </div><span id="structfield.scan_with_limit" class="structfield small-section-header"><a href="#structfield.scan_with_limit" class="anchor field">§</a><code>scan_with_limit: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>If backend supports scan with limit, it will be true.</p>
-</div><span id="structfield.copy" class="structfield small-section-header"><a href="#structfield.copy" class="anchor field">§</a><code>copy: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>If operator supports copy natively, it will be true.</p>
-</div><span id="structfield.rename" class="structfield small-section-header"><a href="#structfield.rename" class="anchor field">§</a><code>rename: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>If operator supports rename natively, it will be true.</p>
 </div><span id="structfield.presign" class="structfield small-section-header"><a href="#structfield.presign" class="anchor field">§</a><code>presign: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>If operator supports presign natively, it will be true.</p>
 </div><span id="structfield.presign_read" class="structfield small-section-header"><a href="#structfield.presign_read" class="anchor field">§</a><code>presign_read: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>If operator supports presign read natively, it will be true.</p>
 </div><span id="structfield.presign_stat" class="structfield small-section-header"><a href="#structfield.presign_stat" class="anchor field">§</a><code>presign_stat: <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>If operator supports presign stat natively, it will be true.</p>
diff --git a/docs/rust/opendal/struct.Error.html b/docs/rust/opendal/struct.Error.html
index 0fadb5cf..f71171d6 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/trait.Builder.html b/docs/rust/opendal/trait.Builder.html
index a9cac50e..6005a456 100644
--- a/docs/rust/opendal/trait.Builder.html
+++ b/docs/rust/opendal/trait.Builder.html
@@ -32,4 +32,4 @@ We also promise that every public API will provide detailed documentation.</p>
 </div></details><details class="toggle method-toggle" open><summary><section id="method.from_env" class="method"><a class="srclink rightside" href="../src/opendal/types/builder.rs.html#57-71">source</a><h4 class="code-header">fn <a href="#method.from_env" class="fn">from_env</a>() -&gt; Self<span class="where fmt-newline">where
     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"><p>Construct a builder from envs. Please note that the env should begin with <code>opendal_{schema_name}_</code>.</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-Builder-for-()" class="impl"><a class="srclink rightside" href="../src/opendal/types/builder.rs.html#78-88">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#79">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#79">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/search-index.js b/docs/rust/search-index.js
index 7b672ed0..612ead77 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":"QNNNDDDDINDNNNNNNNNNNNNNDEDENNNNNNNNNNNNNNDNNDENNNNNNDDDNNNDNGNNSENNNNNNNNNNDLMMMLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLMLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL [...]
+"opendal":{"doc":"OpenDAL is the Open Data Access Layer to <strong>freely</strong> access …","t":"QNNNDDDDINDNNNNNNNNNNNNNDEDENNNNNNNNNNNNNNDNNDENNNNNNDDDNNNDNGNNSENNNNNNNNNNDLMMMLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLMLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL [...]
 }');
 if (typeof window !== 'undefined' && window.initSearch) {window.initSearch(searchIndex)};
 if (typeof exports !== 'undefined') {exports.searchIndex = searchIndex};
diff --git a/docs/rust/src/opendal/services/azblob/backend.rs.html b/docs/rust/src/opendal/services/azblob/backend.rs.html
index 098c1a7b..e7aae6fc 100644
--- a/docs/rust/src/opendal/services/azblob/backend.rs.html
+++ b/docs/rust/src/opendal/services/azblob/backend.rs.html
@@ -857,6 +857,16 @@
 <a href="#857" id="857">857</a>
 <a href="#858" id="858">858</a>
 <a href="#859" id="859">859</a>
+<a href="#860" id="860">860</a>
+<a href="#861" id="861">861</a>
+<a href="#862" id="862">862</a>
+<a href="#863" id="863">863</a>
+<a href="#864" id="864">864</a>
+<a href="#865" id="865">865</a>
+<a href="#866" id="866">866</a>
+<a href="#867" id="867">867</a>
+<a href="#868" id="868">868</a>
+<a href="#869" id="869">869</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
@@ -915,9 +925,13 @@
 ///
 /// This service can be used to:
 ///
+/// - [x] stat
 /// - [x] read
 /// - [x] write
+/// - [x] create_dir
+/// - [x] delete
 /// - [x] copy
+/// - [ ] rename
 /// - [x] list
 /// - [x] scan
 /// - [x] presign
@@ -1330,15 +1344,21 @@
 
                 delete: <span class="bool-val">true</span>,
                 create_dir: <span class="bool-val">true</span>,
-                list: <span class="bool-val">true</span>,
-                scan: <span class="bool-val">true</span>,
                 copy: <span class="bool-val">true</span>,
+
+                scan: <span class="bool-val">true</span>,
+                list: <span class="bool-val">true</span>,
+                list_with_delimiter_slash: <span class="bool-val">true</span>,
+
                 presign: <span class="self">self</span>.has_sas_token,
+                presign_stat: <span class="self">self</span>.has_sas_token,
+                presign_read: <span class="self">self</span>.has_sas_token,
+                presign_write: <span class="self">self</span>.has_sas_token,
+
                 batch: <span class="bool-val">true</span>,
                 batch_delete: <span class="bool-val">true</span>,
                 batch_max_operations: <span class="prelude-val">Some</span>(AZBLOB_BATCH_LIMIT),
 
-                list_with_delimiter_slash: <span class="bool-val">true</span>,
                 ..Default::default()
             });
 
diff --git a/docs/rust/src/opendal/services/azdfs/backend.rs.html b/docs/rust/src/opendal/services/azdfs/backend.rs.html
index 87e771d3..b54e75f6 100644
--- a/docs/rust/src/opendal/services/azdfs/backend.rs.html
+++ b/docs/rust/src/opendal/services/azdfs/backend.rs.html
@@ -517,6 +517,17 @@
 <a href="#517" id="517">517</a>
 <a href="#518" id="518">518</a>
 <a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<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
@@ -574,8 +585,12 @@
 ///
 /// This service can be used to:
 ///
+/// - [x] stat
 /// - [x] read
 /// - [x] write
+/// - [x] create_dir
+/// - [x] delete
+/// - [ ] copy
 /// - [x] rename
 /// - [x] list
 /// - [ ] ~~scan~~
@@ -828,13 +843,20 @@
             .set_root(<span class="kw-2">&amp;</span><span class="self">self</span>.core.root)
             .set_name(<span class="kw-2">&amp;</span><span class="self">self</span>.core.filesystem)
             .set_capability(Capability {
+                stat: <span class="bool-val">true</span>,
+
                 read: <span class="bool-val">true</span>,
                 read_can_next: <span class="bool-val">true</span>,
                 read_with_range: <span class="bool-val">true</span>,
+
                 write: <span class="bool-val">true</span>,
+                create_dir: <span class="bool-val">true</span>,
+                delete: <span class="bool-val">true</span>,
                 rename: <span class="bool-val">true</span>,
+
                 list: <span class="bool-val">true</span>,
                 list_with_delimiter_slash: <span class="bool-val">true</span>,
+
                 ..Default::default()
             });
 
diff --git a/docs/rust/src/opendal/services/dashmap/backend.rs.html b/docs/rust/src/opendal/services/dashmap/backend.rs.html
index 86822b2d..db1c7f06 100644
--- a/docs/rust/src/opendal/services/dashmap/backend.rs.html
+++ b/docs/rust/src/opendal/services/dashmap/backend.rs.html
@@ -149,6 +149,13 @@
 <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>
+<a href="#158" id="158">158</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
@@ -181,10 +188,17 @@
 ///
 /// This service can be used to:
 ///
-/// - [x] get
-/// - [x] set
+/// - [x] stat
+/// - [x] read
+/// - [x] write
+/// - [x] create_dir
 /// - [x] delete
+/// - [ ] copy
+/// - [ ] rename
+/// - [ ] list
 /// - [x] scan
+/// - [ ] presign
+/// - [ ] blocking
 </span><span class="attr">#[derive(Default)]
 </span><span class="kw">pub struct </span>DashmapBuilder {
     root: <span class="prelude-ty">Option</span>&lt;String&gt;,
diff --git a/docs/rust/src/opendal/services/fs/backend.rs.html b/docs/rust/src/opendal/services/fs/backend.rs.html
index 5aeb5f53..3b97f173 100644
--- a/docs/rust/src/opendal/services/fs/backend.rs.html
+++ b/docs/rust/src/opendal/services/fs/backend.rs.html
@@ -721,6 +721,16 @@
 <a href="#721" id="721">721</a>
 <a href="#722" id="722">722</a>
 <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>
+<a href="#727" id="727">727</a>
+<a href="#728" id="728">728</a>
+<a href="#729" id="729">729</a>
+<a href="#730" id="730">730</a>
+<a href="#731" id="731">731</a>
+<a href="#732" id="732">732</a>
+<a href="#733" id="733">733</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
@@ -765,8 +775,11 @@
 ///
 /// This service can be used to:
 ///
+/// - [x] stat
 /// - [x] read
 /// - [x] write
+/// - [x] create_dir
+/// - [x] delete
 /// - [x] copy
 /// - [x] rename
 /// - [x] list
@@ -1024,17 +1037,24 @@
         am.set_scheme(Scheme::Fs)
             .set_root(<span class="kw-2">&amp;</span><span class="self">self</span>.root.to_string_lossy())
             .set_capability(Capability {
+                stat: <span class="bool-val">true</span>,
+
                 read: <span class="bool-val">true</span>,
                 read_can_seek: <span class="bool-val">true</span>,
                 read_with_range: <span class="bool-val">true</span>,
+
                 write: <span class="bool-val">true</span>,
                 write_without_content_length: <span class="bool-val">true</span>,
                 create_dir: <span class="bool-val">true</span>,
+                delete: <span class="bool-val">true</span>,
+
                 list: <span class="bool-val">true</span>,
+                list_with_delimiter_slash: <span class="bool-val">true</span>,
+
                 copy: <span class="bool-val">true</span>,
                 rename: <span class="bool-val">true</span>,
                 blocking: <span class="bool-val">true</span>,
-                list_with_delimiter_slash: <span class="bool-val">true</span>,
+
                 ..Default::default()
             });
 
diff --git a/docs/rust/src/opendal/services/ftp/backend.rs.html b/docs/rust/src/opendal/services/ftp/backend.rs.html
index c3a6f72d..f0e3e81a 100644
--- a/docs/rust/src/opendal/services/ftp/backend.rs.html
+++ b/docs/rust/src/opendal/services/ftp/backend.rs.html
@@ -567,6 +567,18 @@
 <a href="#567" id="567">567</a>
 <a href="#568" id="568">568</a>
 <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>
+<a href="#573" id="573">573</a>
+<a href="#574" id="574">574</a>
+<a href="#575" id="575">575</a>
+<a href="#576" id="576">576</a>
+<a href="#577" id="577">577</a>
+<a href="#578" id="578">578</a>
+<a href="#579" id="579">579</a>
+<a href="#580" id="580">580</a>
+<a href="#581" id="581">581</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
@@ -620,8 +632,13 @@
 ///
 /// This service can be used to:
 ///
+/// - [x] stat
 /// - [x] read
 /// - [x] write
+/// - [x] create_dir
+/// - [x] delete
+/// - [ ] copy
+/// - [ ] rename
 /// - [x] list
 /// - [ ] ~~scan~~
 /// - [ ] ~~presign~~
@@ -886,11 +903,18 @@
         am.set_scheme(Scheme::Ftp)
             .set_root(<span class="kw-2">&amp;</span><span class="self">self</span>.root)
             .set_capability(Capability {
+                stat: <span class="bool-val">true</span>,
+
                 read: <span class="bool-val">true</span>,
                 read_with_range: <span class="bool-val">true</span>,
+
                 write: <span class="bool-val">true</span>,
+                delete: <span class="bool-val">true</span>,
+                create_dir: <span class="bool-val">true</span>,
+
                 list: <span class="bool-val">true</span>,
                 list_with_delimiter_slash: <span class="bool-val">true</span>,
+
                 ..Default::default()
             });
 
diff --git a/docs/rust/src/opendal/services/gcs/backend.rs.html b/docs/rust/src/opendal/services/gcs/backend.rs.html
index 1c5b6713..e46cf31e 100644
--- a/docs/rust/src/opendal/services/gcs/backend.rs.html
+++ b/docs/rust/src/opendal/services/gcs/backend.rs.html
@@ -650,6 +650,15 @@
 <a href="#650" id="650">650</a>
 <a href="#651" id="651">651</a>
 <a href="#652" id="652">652</a>
+<a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<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
@@ -701,11 +710,15 @@
 ///
 /// This service can be used to:
 ///
+/// - [x] stat
 /// - [x] read
 /// - [x] write
+/// - [x] create_dir
+/// - [x] delete
+/// - [x] copy
+/// - [ ] rename
 /// - [x] list
 /// - [x] scan
-/// - [x] copy
 /// - [x] presign
 /// - [ ] blocking
 ///
@@ -1066,16 +1079,21 @@
                 write: <span class="bool-val">true</span>,
                 write_with_content_type: <span class="bool-val">true</span>,
                 write_without_content_length: <span class="bool-val">true</span>,
+                delete: <span class="bool-val">true</span>,
+                copy: <span class="bool-val">true</span>,
 
+                scan: <span class="bool-val">true</span>,
                 list: <span class="bool-val">true</span>,
                 list_with_limit: <span class="bool-val">true</span>,
                 list_with_start_after: <span class="bool-val">true</span>,
-                scan: <span class="bool-val">true</span>,
-                copy: <span class="bool-val">true</span>,
-                presign: <span class="bool-val">true</span>,
-
                 list_with_delimiter_slash: <span class="bool-val">true</span>,
                 list_without_delimiter: <span class="bool-val">true</span>,
+
+                presign: <span class="bool-val">true</span>,
+                presign_stat: <span class="bool-val">true</span>,
+                presign_read: <span class="bool-val">true</span>,
+                presign_write: <span class="bool-val">true</span>,
+
                 ..Default::default()
             });
         am
diff --git a/docs/rust/src/opendal/services/gdrive/builder.rs.html b/docs/rust/src/opendal/services/gdrive/builder.rs.html
index 057d8980..21bd9718 100644
--- a/docs/rust/src/opendal/services/gdrive/builder.rs.html
+++ b/docs/rust/src/opendal/services/gdrive/builder.rs.html
@@ -195,7 +195,7 @@
 /// - `access_token`: set the access_token for google drive api
 /// - `root`: Set the work directory for backend
 ///
-/// You can refer to [`GoogleDriveBuilder`]&#39;s docs for more information
+/// You can refer to [`GdriveBuilder`]&#39;s docs for more information
 ///
 /// # Example
 ///
diff --git a/docs/rust/src/opendal/services/ghac/backend.rs.html b/docs/rust/src/opendal/services/ghac/backend.rs.html
index e40c480b..50b7ce1b 100644
--- a/docs/rust/src/opendal/services/ghac/backend.rs.html
+++ b/docs/rust/src/opendal/services/ghac/backend.rs.html
@@ -651,6 +651,14 @@
 <a href="#651" id="651">651</a>
 <a href="#652" id="652">652</a>
 <a href="#653" id="653">653</a>
+<a href="#654" id="654">654</a>
+<a href="#655" id="655">655</a>
+<a href="#656" id="656">656</a>
+<a href="#657" id="657">657</a>
+<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
@@ -720,13 +728,17 @@
 ///
 /// This service can be used to:
 ///
+/// - [x] stat
 /// - [x] read
 /// - [x] write
+/// - [x] create_dir
+/// - [x] delete
+/// - [x] copy
+/// - [ ] rename
 /// - [ ] list
-/// - [ ] ~~scan~~
-/// - [ ] ~~presign~~
+/// - [ ] scan
+/// - [ ] presign
 /// - [ ] blocking
-///
 /// # Notes
 ///
 /// This service is mainly provided by github actions.
@@ -954,11 +966,15 @@
             .set_root(<span class="kw-2">&amp;</span><span class="self">self</span>.root)
             .set_name(<span class="kw-2">&amp;</span><span class="self">self</span>.version)
             .set_capability(Capability {
+                stat: <span class="bool-val">true</span>,
+
                 read: <span class="bool-val">true</span>,
                 read_can_next: <span class="bool-val">true</span>,
                 read_with_range: <span class="bool-val">true</span>,
 
                 write: <span class="bool-val">true</span>,
+                create_dir: <span class="bool-val">true</span>,
+                delete: <span class="bool-val">true</span>,
 
                 ..Default::default()
             });
diff --git a/docs/rust/src/opendal/services/hdfs/backend.rs.html b/docs/rust/src/opendal/services/hdfs/backend.rs.html
index 813c089b..764a86e9 100644
--- a/docs/rust/src/opendal/services/hdfs/backend.rs.html
+++ b/docs/rust/src/opendal/services/hdfs/backend.rs.html
@@ -527,6 +527,16 @@
 <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>
+<a href="#531" id="531">531</a>
+<a href="#532" id="532">532</a>
+<a href="#533" id="533">533</a>
+<a href="#534" id="534">534</a>
+<a href="#535" id="535">535</a>
+<a href="#536" id="536">536</a>
+<a href="#537" id="537">537</a>
+<a href="#538" id="538">538</a>
+<a href="#539" id="539">539</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,13 +580,17 @@
 ///
 /// This service can be used to:
 ///
+/// - [x] stat
 /// - [x] read
 /// - [x] write
+/// - [x] create_dir
+/// - [x] delete
+/// - [ ] copy
+/// - [ ] rename
 /// - [x] list
 /// - [ ] ~~scan~~
 /// - [ ] ~~presign~~
 /// - [x] blocking
-///
 /// # Differences with webhdfs
 ///
 /// [Webhdfs][crate::services::Webhdfs] is powered by hdfs&#39;s RESTful HTTP API.
@@ -622,7 +636,7 @@
 /// ```
 ///
 /// `CLASSPATH` is not set correctly or your hadoop installation is incorrect.
-///  
+///
 /// To set `CLASSPATH`:
 /// ```shell
 /// export CLASSPATH=$(find $HADOOP_HOME -iname &quot;*.jar&quot; | xargs echo | tr &#39; &#39; &#39;:&#39;):${CLASSPATH}
@@ -767,15 +781,21 @@
         am.set_scheme(Scheme::Hdfs)
             .set_root(<span class="kw-2">&amp;</span><span class="self">self</span>.root)
             .set_capability(Capability {
+                stat: <span class="bool-val">true</span>,
+
                 read: <span class="bool-val">true</span>,
                 read_can_seek: <span class="bool-val">true</span>,
                 read_with_range: <span class="bool-val">true</span>,
 
                 write: <span class="bool-val">true</span>,
+                create_dir: <span class="bool-val">true</span>,
+                delete: <span class="bool-val">true</span>,
+
                 list: <span class="bool-val">true</span>,
+                list_with_delimiter_slash: <span class="bool-val">true</span>,
+
                 blocking: <span class="bool-val">true</span>,
 
-                list_with_delimiter_slash: <span class="bool-val">true</span>,
                 ..Default::default()
             });
 
diff --git a/docs/rust/src/opendal/services/http/backend.rs.html b/docs/rust/src/opendal/services/http/backend.rs.html
index 59812885..9ffd1fd9 100644
--- a/docs/rust/src/opendal/services/http/backend.rs.html
+++ b/docs/rust/src/opendal/services/http/backend.rs.html
@@ -561,6 +561,11 @@
 <a href="#561" id="561">561</a>
 <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>
+<a href="#566" id="566">566</a>
+<a href="#567" id="567">567</a>
+<a href="#568" id="568">568</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
@@ -602,8 +607,13 @@
 ///
 /// This service can be used to:
 ///
+/// - [x] stat
 /// - [x] read
 /// - [ ] ~~write~~
+/// - [ ] ~~create_dir~~
+/// - [ ] ~~delete~~
+/// - [ ] ~~copy~~
+/// - [ ] ~~rename~~
 /// - [ ] ~~list~~
 /// - [ ] ~~scan~~
 /// - [ ] ~~presign~~
diff --git a/docs/rust/src/opendal/services/ipfs/backend.rs.html b/docs/rust/src/opendal/services/ipfs/backend.rs.html
index 994af38e..1ce1c212 100644
--- a/docs/rust/src/opendal/services/ipfs/backend.rs.html
+++ b/docs/rust/src/opendal/services/ipfs/backend.rs.html
@@ -519,6 +519,14 @@
 <a href="#519" id="519">519</a>
 <a href="#520" id="520">520</a>
 <a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</a>
+<a href="#526" id="526">526</a>
+<a href="#527" id="527">527</a>
+<a href="#528" id="528">528</a>
+<a href="#529" id="529">529</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
@@ -560,8 +568,13 @@
 ///
 /// This service can be used to:
 ///
+/// - [x] stat
 /// - [x] read
 /// - [ ] ~~write~~
+/// - [ ] ~~create_dir~~
+/// - [ ] ~~delete~~
+/// - [ ] ~~copy~~
+/// - [ ] ~~rename~~
 /// - [x] list
 /// - [ ] ~~scan~~
 /// - [ ] presign
@@ -741,12 +754,15 @@
         ma.set_scheme(Scheme::Ipfs)
             .set_root(<span class="kw-2">&amp;</span><span class="self">self</span>.root)
             .set_capability(Capability {
+                stat: <span class="bool-val">true</span>,
+
                 read: <span class="bool-val">true</span>,
                 read_can_next: <span class="bool-val">true</span>,
                 read_with_range: <span class="bool-val">true</span>,
-                list: <span class="bool-val">true</span>,
 
+                list: <span class="bool-val">true</span>,
                 list_with_delimiter_slash: <span class="bool-val">true</span>,
+
                 ..Default::default()
             });
 
diff --git a/docs/rust/src/opendal/services/ipmfs/backend.rs.html b/docs/rust/src/opendal/services/ipmfs/backend.rs.html
index 01cbcc0c..1666d1d9 100644
--- a/docs/rust/src/opendal/services/ipmfs/backend.rs.html
+++ b/docs/rust/src/opendal/services/ipmfs/backend.rs.html
@@ -312,6 +312,28 @@
 <a href="#312" id="312">312</a>
 <a href="#313" id="313">313</a>
 <a href="#314" id="314">314</a>
+<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>
+<a href="#319" id="319">319</a>
+<a href="#320" id="320">320</a>
+<a href="#321" id="321">321</a>
+<a href="#322" id="322">322</a>
+<a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<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>
+<a href="#330" id="330">330</a>
+<a href="#331" id="331">331</a>
+<a href="#332" id="332">332</a>
+<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
@@ -349,6 +371,23 @@
 <span class="kw">use crate</span>::<span class="kw-2">*</span>;
 
 <span class="doccomment">/// Backend for IPFS service
+///
+/// # Capabilities
+///
+/// This service can be used to:
+///
+/// - [x] stat
+/// - [x] read
+/// - [x] write
+/// - [ ] create_dir
+/// - [x] delete
+/// - [ ] copy
+/// - [ ] rename
+/// - [x] list
+/// - [ ] scan
+/// - [ ] presign
+/// - [ ] blocking
+///
 </span><span class="attr">#[derive(Clone)]
 </span><span class="kw">pub struct </span>IpmfsBackend {
     root: String,
@@ -389,13 +428,18 @@
         am.set_scheme(Scheme::Ipmfs)
             .set_root(<span class="kw-2">&amp;</span><span class="self">self</span>.root)
             .set_capability(Capability {
+                stat: <span class="bool-val">true</span>,
+
                 read: <span class="bool-val">true</span>,
                 read_can_next: <span class="bool-val">true</span>,
                 read_with_range: <span class="bool-val">true</span>,
+
                 write: <span class="bool-val">true</span>,
+                delete: <span class="bool-val">true</span>,
 
                 list: <span class="bool-val">true</span>,
                 list_with_delimiter_slash: <span class="bool-val">true</span>,
+
                 ..Default::default()
             });
 
diff --git a/docs/rust/src/opendal/services/memcached/backend.rs.html b/docs/rust/src/opendal/services/memcached/backend.rs.html
index 517edc12..0da4e7a4 100644
--- a/docs/rust/src/opendal/services/memcached/backend.rs.html
+++ b/docs/rust/src/opendal/services/memcached/backend.rs.html
@@ -308,6 +308,11 @@
 <a href="#308" id="308">308</a>
 <a href="#309" id="309">309</a>
 <a href="#310" id="310">310</a>
+<a href="#311" id="311">311</a>
+<a href="#312" id="312">312</a>
+<a href="#313" id="313">313</a>
+<a href="#314" id="314">314</a>
+<a href="#315" id="315">315</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
@@ -344,8 +349,13 @@
 ///
 /// This service can be used to:
 ///
+/// - [x] stat
 /// - [x] read
 /// - [x] write
+/// - [x] create_dir
+/// - [x] delete
+/// - [ ] copy
+/// - [ ] rename
 /// - [ ] ~~list~~
 /// - [ ] scan
 /// - [ ] ~~presign~~
diff --git a/docs/rust/src/opendal/services/memory/backend.rs.html b/docs/rust/src/opendal/services/memory/backend.rs.html
index 04b08252..7e476607 100644
--- a/docs/rust/src/opendal/services/memory/backend.rs.html
+++ b/docs/rust/src/opendal/services/memory/backend.rs.html
@@ -157,6 +157,13 @@
 <a href="#157" id="157">157</a>
 <a href="#158" id="158">158</a>
 <a href="#159" id="159">159</a>
+<a href="#160" id="160">160</a>
+<a href="#161" id="161">161</a>
+<a href="#162" id="162">162</a>
+<a href="#163" id="163">163</a>
+<a href="#164" id="164">164</a>
+<a href="#165" id="165">165</a>
+<a href="#166" id="166">166</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
@@ -190,10 +197,17 @@
 ///
 /// This service can be used to:
 ///
-/// - [x] get
-/// - [x] set
+/// - [x] stat
+/// - [x] read
+/// - [x] write
+/// - [x] create_dir
 /// - [x] delete
+/// - [ ] copy
+/// - [ ] rename
+/// - [ ] list
 /// - [x] scan
+/// - [ ] presign
+/// - [ ] blocking
 </span><span class="attr">#[derive(Default)]
 </span><span class="kw">pub struct </span>MemoryBuilder {
     root: <span class="prelude-ty">Option</span>&lt;String&gt;,
diff --git a/docs/rust/src/opendal/services/moka/backend.rs.html b/docs/rust/src/opendal/services/moka/backend.rs.html
index 9c98d27b..5905a308 100644
--- a/docs/rust/src/opendal/services/moka/backend.rs.html
+++ b/docs/rust/src/opendal/services/moka/backend.rs.html
@@ -237,6 +237,13 @@
 <a href="#237" id="237">237</a>
 <a href="#238" id="238">238</a>
 <a href="#239" id="239">239</a>
+<a href="#240" id="240">240</a>
+<a href="#241" id="241">241</a>
+<a href="#242" id="242">242</a>
+<a href="#243" id="243">243</a>
+<a href="#244" id="244">244</a>
+<a href="#245" id="245">245</a>
+<a href="#246" id="246">246</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
@@ -272,10 +279,17 @@
 ///
 /// This service can be used to:
 ///
-/// - [x] get
-/// - [x] set
+/// - [x] stat
+/// - [x] read
+/// - [x] write
+/// - [x] create_dir
 /// - [x] delete
-/// - [ ] ~~ scan ~~
+/// - [ ] copy
+/// - [ ] rename
+/// - [ ] list
+/// - [ ] ~~scan~~
+/// - [ ] presign
+/// - [ ] blocking
 </span><span class="attr">#[derive(Default, Debug)]
 </span><span class="kw">pub struct </span>MokaBuilder {
     <span class="doccomment">/// Name for this cache instance.
diff --git a/docs/rust/src/opendal/services/obs/backend.rs.html b/docs/rust/src/opendal/services/obs/backend.rs.html
index 94949916..2968d9c5 100644
--- a/docs/rust/src/opendal/services/obs/backend.rs.html
+++ b/docs/rust/src/opendal/services/obs/backend.rs.html
@@ -441,6 +441,12 @@
 <a href="#441" id="441">441</a>
 <a href="#442" id="442">442</a>
 <a href="#443" id="443">443</a>
+<a href="#444" id="444">444</a>
+<a href="#445" id="445">445</a>
+<a href="#446" id="446">446</a>
+<a href="#447" id="447">447</a>
+<a href="#448" id="448">448</a>
+<a href="#449" id="449">449</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
@@ -484,9 +490,13 @@
 ///
 /// This service can be used to:
 ///
+/// - [x] stat
 /// - [x] read
 /// - [x] write
+/// - [x] create_dir
+/// - [x] delete
 /// - [x] copy
+/// - [ ] rename
 /// - [x] list
 /// - [x] scan
 /// - [ ] presign
@@ -763,10 +773,12 @@
                 write_with_content_type: <span class="bool-val">true</span>,
                 write_with_cache_control: <span class="bool-val">true</span>,
 
-                list: <span class="bool-val">true</span>,
-                scan: <span class="bool-val">true</span>,
+                delete: <span class="bool-val">true</span>,
+                create_dir: <span class="bool-val">true</span>,
                 copy: <span class="bool-val">true</span>,
 
+                scan: <span class="bool-val">true</span>,
+                list: <span class="bool-val">true</span>,
                 list_with_delimiter_slash: <span class="bool-val">true</span>,
                 list_without_delimiter: <span class="bool-val">true</span>,
 
diff --git a/docs/rust/src/opendal/services/oss/backend.rs.html b/docs/rust/src/opendal/services/oss/backend.rs.html
index f879b975..86e77f26 100644
--- a/docs/rust/src/opendal/services/oss/backend.rs.html
+++ b/docs/rust/src/opendal/services/oss/backend.rs.html
@@ -673,6 +673,16 @@
 <a href="#673" id="673">673</a>
 <a href="#674" id="674">674</a>
 <a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</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
@@ -720,12 +730,16 @@
 ///
 /// This service can be used to:
 ///
+/// - [x] stat
 /// - [x] read
 /// - [x] write
+/// - [x] create_dir
+/// - [x] delete
 /// - [x] copy
+/// - [ ] rename
 /// - [x] list
 /// - [x] scan
-/// - [ ] presign
+/// - [x] presign
 /// - [ ] blocking
 ///
 /// # Configuration
@@ -1135,17 +1149,23 @@
                 write_with_cache_control: <span class="bool-val">true</span>,
                 write_with_content_type: <span class="bool-val">true</span>,
                 write_without_content_length: <span class="bool-val">true</span>,
+                delete: <span class="bool-val">true</span>,
+                create_dir: <span class="bool-val">true</span>,
+                copy: <span class="bool-val">true</span>,
 
-                list: <span class="bool-val">true</span>,
                 scan: <span class="bool-val">true</span>,
-                copy: <span class="bool-val">true</span>,
+                list: <span class="bool-val">true</span>,
+                list_with_delimiter_slash: <span class="bool-val">true</span>,
+                list_without_delimiter: <span class="bool-val">true</span>,
+
                 presign: <span class="bool-val">true</span>,
+                presign_stat: <span class="bool-val">true</span>,
+                presign_read: <span class="bool-val">true</span>,
+                presign_write: <span class="bool-val">true</span>,
+
                 batch: <span class="bool-val">true</span>,
                 batch_max_operations: <span class="prelude-val">Some</span>(<span class="number">1000</span>),
 
-                list_with_delimiter_slash: <span class="bool-val">true</span>,
-                list_without_delimiter: <span class="bool-val">true</span>,
-
                 ..Default::default()
             });
 
diff --git a/docs/rust/src/opendal/services/redis/backend.rs.html b/docs/rust/src/opendal/services/redis/backend.rs.html
index d718d950..72735a25 100644
--- a/docs/rust/src/opendal/services/redis/backend.rs.html
+++ b/docs/rust/src/opendal/services/redis/backend.rs.html
@@ -361,6 +361,18 @@
 <a href="#361" id="361">361</a>
 <a href="#362" id="362">362</a>
 <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>
+<a href="#367" id="367">367</a>
+<a href="#368" id="368">368</a>
+<a href="#369" id="369">369</a>
+<a href="#370" id="370">370</a>
+<a href="#371" id="371">371</a>
+<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>
 </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
@@ -415,6 +427,18 @@
 /// - [ ] ~~presign~~
 /// - [ ] blocking
 ///
+/// - [x] stat
+/// - [x] read
+/// - [x] write
+/// - [x] create_dir
+/// - [x] delete
+/// - [ ] copy
+/// - [ ] rename
+/// - [ ] ~~list~~
+/// - [ ] scan
+/// - [ ] ~~presign~~
+/// - [ ] blocking
+///
 /// # Configuration
 ///
 /// - `root`: Set the working directory of `OpenDAL`
diff --git a/docs/rust/src/opendal/services/rocksdb/backend.rs.html b/docs/rust/src/opendal/services/rocksdb/backend.rs.html
index 5168edc7..46955357 100644
--- a/docs/rust/src/opendal/services/rocksdb/backend.rs.html
+++ b/docs/rust/src/opendal/services/rocksdb/backend.rs.html
@@ -197,6 +197,11 @@
 <a href="#197" id="197">197</a>
 <a href="#198" id="198">198</a>
 <a href="#199" id="199">199</a>
+<a href="#200" id="200">200</a>
+<a href="#201" id="201">201</a>
+<a href="#202" id="202">202</a>
+<a href="#203" id="203">203</a>
+<a href="#204" id="204">204</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
@@ -232,10 +237,15 @@
 ///
 /// This service can be used to:
 ///
+/// - [x] stat
 /// - [x] read
 /// - [x] write
+/// - [x] create_dir
+/// - [x] delete
+/// - [ ] copy
+/// - [ ] rename
 /// - [ ] ~~list~~
-/// - [ ] scan
+/// - [x] scan
 /// - [ ] ~~presign~~
 /// - [x] blocking
 ///
diff --git a/docs/rust/src/opendal/services/s3/backend.rs.html b/docs/rust/src/opendal/services/s3/backend.rs.html
index af61247b..59a0c23d 100644
--- a/docs/rust/src/opendal/services/s3/backend.rs.html
+++ b/docs/rust/src/opendal/services/s3/backend.rs.html
@@ -1247,6 +1247,15 @@
 <a href="#1247" id="1247">1247</a>
 <a href="#1248" id="1248">1248</a>
 <a href="#1249" id="1249">1249</a>
+<a href="#1250" id="1250">1250</a>
+<a href="#1251" id="1251">1251</a>
+<a href="#1252" id="1252">1252</a>
+<a href="#1253" id="1253">1253</a>
+<a href="#1254" id="1254">1254</a>
+<a href="#1255" id="1255">1255</a>
+<a href="#1256" id="1256">1256</a>
+<a href="#1257" id="1257">1257</a>
+<a href="#1258" id="1258">1258</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
@@ -1312,9 +1321,13 @@
 ///
 /// This service can be used to:
 ///
+/// - [x] stat
 /// - [x] read
 /// - [x] write
+/// - [x] create_dir
+/// - [x] delete
 /// - [x] copy
+/// - [ ] rename
 /// - [x] list
 /// - [x] scan
 /// - [x] presign
@@ -2221,20 +2234,25 @@
                 write_with_cache_control: <span class="bool-val">true</span>,
                 write_with_content_type: <span class="bool-val">true</span>,
                 write_without_content_length: <span class="bool-val">true</span>,
+                create_dir: <span class="bool-val">true</span>,
+                delete: <span class="bool-val">true</span>,
+                copy: <span class="bool-val">true</span>,
 
+                scan: <span class="bool-val">true</span>,
                 list: <span class="bool-val">true</span>,
                 list_with_limit: <span class="bool-val">true</span>,
                 list_with_start_after: <span class="bool-val">true</span>,
+                list_without_delimiter: <span class="bool-val">true</span>,
+                list_with_delimiter_slash: <span class="bool-val">true</span>,
 
-                scan: <span class="bool-val">true</span>,
-                copy: <span class="bool-val">true</span>,
                 presign: <span class="bool-val">true</span>,
+                presign_stat: <span class="bool-val">true</span>,
+                presign_read: <span class="bool-val">true</span>,
+                presign_write: <span class="bool-val">true</span>,
+
                 batch: <span class="bool-val">true</span>,
                 batch_max_operations: <span class="prelude-val">Some</span>(<span class="number">1000</span>),
 
-                list_without_delimiter: <span class="bool-val">true</span>,
-                list_with_delimiter_slash: <span class="bool-val">true</span>,
-
                 ..Default::default()
             });
 
diff --git a/docs/rust/src/opendal/services/sftp/backend.rs.html b/docs/rust/src/opendal/services/sftp/backend.rs.html
index bb47b480..21ccddc6 100644
--- a/docs/rust/src/opendal/services/sftp/backend.rs.html
+++ b/docs/rust/src/opendal/services/sftp/backend.rs.html
@@ -507,6 +507,22 @@
 <a href="#507" id="507">507</a>
 <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>
+<a href="#512" id="512">512</a>
+<a href="#513" id="513">513</a>
+<a href="#514" id="514">514</a>
+<a href="#515" id="515">515</a>
+<a href="#516" id="516">516</a>
+<a href="#517" id="517">517</a>
+<a href="#518" id="518">518</a>
+<a href="#519" id="519">519</a>
+<a href="#520" id="520">520</a>
+<a href="#521" id="521">521</a>
+<a href="#522" id="522">522</a>
+<a href="#523" id="523">523</a>
+<a href="#524" id="524">524</a>
+<a href="#525" id="525">525</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
@@ -564,6 +580,18 @@
 /// - [ ] ~~presign~~
 /// - [ ] blocking
 ///
+/// - [x] stat
+/// - [x] read
+/// - [x] write
+/// - [x] create_dir
+/// - [x] delete
+/// - [ ] copy
+/// - [ ] rename
+/// - [x] list
+/// - [ ] ~~scan~~
+/// - [ ] ~~presign~~
+/// - [ ] blocking
+///
 /// # Configuration
 ///
 /// - `endpoint`: Set the endpoint for connection
@@ -804,11 +832,15 @@
             .set_scheme(Scheme::Sftp)
             .set_capability(Capability {
                 stat: <span class="bool-val">true</span>,
+
                 read: <span class="bool-val">true</span>,
+
                 write: <span class="bool-val">true</span>,
+                create_dir: <span class="bool-val">true</span>,
+                delete: <span class="bool-val">true</span>,
+
                 list: <span class="bool-val">true</span>,
                 list_with_limit: <span class="bool-val">true</span>,
-
                 list_with_delimiter_slash: <span class="bool-val">true</span>,
 
                 ..Default::default()
diff --git a/docs/rust/src/opendal/services/sled/backend.rs.html b/docs/rust/src/opendal/services/sled/backend.rs.html
index 9e420606..c24a2772 100644
--- a/docs/rust/src/opendal/services/sled/backend.rs.html
+++ b/docs/rust/src/opendal/services/sled/backend.rs.html
@@ -205,6 +205,18 @@
 <a href="#205" id="205">205</a>
 <a href="#206" id="206">206</a>
 <a href="#207" id="207">207</a>
+<a href="#208" id="208">208</a>
+<a href="#209" id="209">209</a>
+<a href="#210" id="210">210</a>
+<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>
+<a href="#215" id="215">215</a>
+<a href="#216" id="216">216</a>
+<a href="#217" id="217">217</a>
+<a href="#218" id="218">218</a>
+<a href="#219" id="219">219</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
@@ -248,6 +260,18 @@
 /// - [ ] ~~presign~~
 /// - [x] blocking
 ///
+/// - [x] stat
+/// - [x] read
+/// - [x] write
+/// - [x] create_dir
+/// - [x] delete
+/// - [ ] copy
+/// - [ ] rename
+/// - [ ] ~~list~~
+/// - [ ] scan
+/// - [ ] ~~presign~~
+/// - [x] blocking
+///
 /// # Configuration
 ///
 /// - `datadir`: Set the path to the sled data directory
diff --git a/docs/rust/src/opendal/services/supabase/backend.rs.html b/docs/rust/src/opendal/services/supabase/backend.rs.html
index 00a6ea1d..ca8d7c91 100644
--- a/docs/rust/src/opendal/services/supabase/backend.rs.html
+++ b/docs/rust/src/opendal/services/supabase/backend.rs.html
@@ -321,6 +321,12 @@
 <a href="#321" id="321">321</a>
 <a href="#322" id="322">322</a>
 <a href="#323" id="323">323</a>
+<a href="#324" id="324">324</a>
+<a href="#325" id="325">325</a>
+<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
@@ -356,9 +362,13 @@
 ///
 /// # Capabilities
 ///
+/// - [x] stat
 /// - [x] read
 /// - [x] write
+/// - [x] create_dir
+/// - [x] delete
 /// - [ ] copy
+/// - [ ] rename
 /// - [ ] list
 /// - [ ] scan
 /// - [ ] presign
@@ -539,7 +549,9 @@
             .set_name(<span class="kw-2">&amp;</span><span class="self">self</span>.core.bucket)
             .set_capability(Capability {
                 stat: <span class="bool-val">true</span>,
+
                 read: <span class="bool-val">true</span>,
+
                 write: <span class="bool-val">true</span>,
                 create_dir: <span class="bool-val">true</span>,
                 delete: <span class="bool-val">true</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 ec88924d..e8393f08 100644
--- a/docs/rust/src/opendal/services/vercel_artifacts/backend.rs.html
+++ b/docs/rust/src/opendal/services/vercel_artifacts/backend.rs.html
@@ -142,6 +142,8 @@
 <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>
 </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
@@ -204,7 +206,9 @@
             .set_capability(Capability {
                 read: <span class="bool-val">true</span>,
                 read_can_next: <span class="bool-val">true</span>,
+
                 write: <span class="bool-val">true</span>,
+
                 ..Default::default()
             });
 
diff --git a/docs/rust/src/opendal/services/vercel_artifacts/builder.rs.html b/docs/rust/src/opendal/services/vercel_artifacts/builder.rs.html
index 67070eea..0843577f 100644
--- a/docs/rust/src/opendal/services/vercel_artifacts/builder.rs.html
+++ b/docs/rust/src/opendal/services/vercel_artifacts/builder.rs.html
@@ -121,6 +121,9 @@
 <a href="#121" id="121">121</a>
 <a href="#122" id="122">122</a>
 <a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</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
@@ -151,8 +154,11 @@
 ///
 /// This service can be used to:
 ///
+/// - [ ] stat
 /// - [x] read
 /// - [x] write
+/// - [x] create_dir
+/// - [x] delete
 /// - [ ] ~~copy~~
 /// - [ ] ~~rename~~
 /// - [ ] ~~list~~
diff --git a/docs/rust/src/opendal/services/wasabi/backend.rs.html b/docs/rust/src/opendal/services/wasabi/backend.rs.html
index 733ab8db..04621b9a 100644
--- a/docs/rust/src/opendal/services/wasabi/backend.rs.html
+++ b/docs/rust/src/opendal/services/wasabi/backend.rs.html
@@ -1171,6 +1171,16 @@
 <a href="#1171" id="1171">1171</a>
 <a href="#1172" id="1172">1172</a>
 <a href="#1173" id="1173">1173</a>
+<a href="#1174" id="1174">1174</a>
+<a href="#1175" id="1175">1175</a>
+<a href="#1176" id="1176">1176</a>
+<a href="#1177" id="1177">1177</a>
+<a href="#1178" id="1178">1178</a>
+<a href="#1179" id="1179">1179</a>
+<a href="#1180" id="1180">1180</a>
+<a href="#1181" id="1181">1181</a>
+<a href="#1182" id="1182">1182</a>
+<a href="#1183" id="1183">1183</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
@@ -1233,13 +1243,16 @@
 ///
 /// This service can be used to:
 ///
+/// - [x] stat
 /// - [x] read
 /// - [x] write
+/// - [x] create_dir
+/// - [x] delete
 /// - [x] copy
+/// - [x] rename
 /// - [x] list
 /// - [x] scan
 /// - [x] presign
-/// - [x] rename
 /// - [ ] blocking
 ///
 /// # Configuration
@@ -2084,16 +2097,23 @@
                 read_with_range: <span class="bool-val">true</span>,
 
                 write: <span class="bool-val">true</span>,
-                list: <span class="bool-val">true</span>,
-                scan: <span class="bool-val">true</span>,
+                create_dir: <span class="bool-val">true</span>,
+                delete: <span class="bool-val">true</span>,
                 copy: <span class="bool-val">true</span>,
-                presign: <span class="bool-val">true</span>,
-                batch: <span class="bool-val">true</span>,
                 rename: <span class="bool-val">true</span>,
 
+                scan: <span class="bool-val">true</span>,
+                list: <span class="bool-val">true</span>,
                 list_without_delimiter: <span class="bool-val">true</span>,
                 list_with_delimiter_slash: <span class="bool-val">true</span>,
 
+                presign: <span class="bool-val">true</span>,
+                presign_stat: <span class="bool-val">true</span>,
+                presign_read: <span class="bool-val">true</span>,
+                presign_write: <span class="bool-val">true</span>,
+
+                batch: <span class="bool-val">true</span>,
+
                 ..Default::default()
             });
 
diff --git a/docs/rust/src/opendal/services/webdav/backend.rs.html b/docs/rust/src/opendal/services/webdav/backend.rs.html
index d8cd7063..aa7e01a0 100644
--- a/docs/rust/src/opendal/services/webdav/backend.rs.html
+++ b/docs/rust/src/opendal/services/webdav/backend.rs.html
@@ -673,6 +673,16 @@
 <a href="#673" id="673">673</a>
 <a href="#674" id="674">674</a>
 <a href="#675" id="675">675</a>
+<a href="#676" id="676">676</a>
+<a href="#677" id="677">677</a>
+<a href="#678" id="678">678</a>
+<a href="#679" id="679">679</a>
+<a href="#680" id="680">680</a>
+<a href="#681" id="681">681</a>
+<a href="#682" id="682">682</a>
+<a href="#683" id="683">683</a>
+<a href="#684" id="684">684</a>
+<a href="#685" id="685">685</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
@@ -717,8 +727,11 @@
 ///
 /// This service can be used to:
 ///
+/// - [x] stat
 /// - [x] read
 /// - [x] write
+/// - [x] create_dir
+/// - [x] delete
 /// - [x] copy
 /// - [x] rename
 /// - [x] list
@@ -942,15 +955,22 @@
         ma.set_scheme(Scheme::Webdav)
             .set_root(<span class="kw-2">&amp;</span><span class="self">self</span>.root)
             .set_capability(Capability {
+                stat: <span class="bool-val">true</span>,
+
                 read: <span class="bool-val">true</span>,
                 read_can_next: <span class="bool-val">true</span>,
                 read_with_range: <span class="bool-val">true</span>,
+
                 write: <span class="bool-val">true</span>,
-                list: <span class="bool-val">true</span>,
+                create_dir: <span class="bool-val">true</span>,
+                delete: <span class="bool-val">true</span>,
                 copy: <span class="bool-val">true</span>,
                 rename: <span class="bool-val">true</span>,
+
+                list: <span class="bool-val">true</span>,
                 list_without_delimiter: <span class="bool-val">true</span>,
                 list_with_delimiter_slash: <span class="bool-val">true</span>,
+
                 ..Default::default()
             });
 
diff --git a/docs/rust/src/opendal/services/webhdfs/backend.rs.html b/docs/rust/src/opendal/services/webhdfs/backend.rs.html
index 9f74e8ab..d5fbc797 100644
--- a/docs/rust/src/opendal/services/webhdfs/backend.rs.html
+++ b/docs/rust/src/opendal/services/webhdfs/backend.rs.html
@@ -606,6 +606,18 @@
 <a href="#606" id="606">606</a>
 <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>
+<a href="#611" id="611">611</a>
+<a href="#612" id="612">612</a>
+<a href="#613" id="613">613</a>
+<a href="#614" id="614">614</a>
+<a href="#615" id="615">615</a>
+<a href="#616" id="616">616</a>
+<a href="#617" id="617">617</a>
+<a href="#618" id="618">618</a>
+<a href="#619" id="619">619</a>
+<a href="#620" id="620">620</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
@@ -659,8 +671,13 @@
 ///
 /// This service can be used to:
 ///
+/// - [x] stat
 /// - [x] read
 /// - [x] write
+/// - [x] create_dir
+/// - [x] delete
+/// - [ ] copy
+/// - [ ] rename
 /// - [x] list
 /// - [ ] ~~scan~~
 /// - [ ] ~~presign~~
@@ -1074,13 +1091,20 @@
         am.set_scheme(Scheme::Webhdfs)
             .set_root(<span class="kw-2">&amp;</span><span class="self">self</span>.root)
             .set_capability(Capability {
+                stat: <span class="bool-val">true</span>,
+
                 read: <span class="bool-val">true</span>,
                 read_can_next: <span class="bool-val">true</span>,
                 read_with_range: <span class="bool-val">true</span>,
+
                 write: <span class="bool-val">true</span>,
+                create_dir: <span class="bool-val">true</span>,
+                delete: <span class="bool-val">true</span>,
+
                 list: <span class="bool-val">true</span>,
                 list_without_delimiter: <span class="bool-val">true</span>,
                 list_with_delimiter_slash: <span class="bool-val">true</span>,
+
                 ..Default::default()
             });
         am
diff --git a/docs/rust/src/opendal/types/capability.rs.html b/docs/rust/src/opendal/types/capability.rs.html
index e43b642e..ff06fbcf 100644
--- a/docs/rust/src/opendal/types/capability.rs.html
+++ b/docs/rust/src/opendal/types/capability.rs.html
@@ -222,7 +222,7 @@
 /// - Operation with sub operations should be named like `presign_read`.
 /// - Operation with variants should be named like `read_can_seek`.
 /// - Operation with arguments should be named like `read_with_range`.
-/// - Operation with limtations should be named like `batch_max_operations`.
+/// - Operation with limitations should be named like `batch_max_operations`.
 </span><span class="attr">#[derive(Copy, Clone, Default)]
 </span><span class="kw">pub struct </span>Capability {
     <span class="doccomment">/// If operator supports stat natively, it will be true.
@@ -271,6 +271,12 @@
     <span class="doccomment">/// If operator supports delete natively, it will be true.
     </span><span class="kw">pub </span>delete: bool,
 
+    <span class="doccomment">/// If operator supports copy natively, it will be true.
+    </span><span class="kw">pub </span>copy: bool,
+
+    <span class="doccomment">/// If operator supports rename natively, it will be true.
+    </span><span class="kw">pub </span>rename: bool,
+
     <span class="doccomment">/// If operator supports list natively, it will be true.
     </span><span class="kw">pub </span>list: bool,
     <span class="doccomment">/// If backend supports list with limit, it will be true.
@@ -286,12 +292,6 @@
     <span class="doccomment">/// If backend supports scan with limit, it will be true.
     </span><span class="kw">pub </span>scan_with_limit: bool,
 
-    <span class="doccomment">/// If operator supports copy natively, it will be true.
-    </span><span class="kw">pub </span>copy: bool,
-
-    <span class="doccomment">/// If operator supports rename natively, it will be true.
-    </span><span class="kw">pub </span>rename: bool,
-
     <span class="doccomment">/// If operator supports presign natively, it will be true.
     </span><span class="kw">pub </span>presign: bool,
     <span class="doccomment">/// If operator supports presign read natively, it will be true.
@@ -316,12 +316,12 @@
     <span class="kw">fn </span>fmt(<span class="kw-2">&amp;</span><span class="self">self</span>, f: <span class="kw-2">&amp;mut </span>std::fmt::Formatter&lt;<span class="lifetime">&#39;_</span>&gt;) -&gt; std::fmt::Result {
         <span class="kw">let </span><span class="kw-2">mut </span>s = <span class="macro">vec!</span>[];
 
-        <span class="kw">if </span><span class="self">self</span>.read {
-            s.push(<span class="string">&quot;Read&quot;</span>);
-        }
         <span class="kw">if </span><span class="self">self</span>.stat {
             s.push(<span class="string">&quot;Stat&quot;</span>);
         }
+        <span class="kw">if </span><span class="self">self</span>.read {
+            s.push(<span class="string">&quot;Read&quot;</span>);
+        }
         <span class="kw">if </span><span class="self">self</span>.write {
             s.push(<span class="string">&quot;Write&quot;</span>);
         }
@@ -331,18 +331,18 @@
         <span class="kw">if </span><span class="self">self</span>.delete {
             s.push(<span class="string">&quot;Delete&quot;</span>);
         }
-        <span class="kw">if </span><span class="self">self</span>.list {
-            s.push(<span class="string">&quot;List&quot;</span>);
-        }
-        <span class="kw">if </span><span class="self">self</span>.scan {
-            s.push(<span class="string">&quot;Scan&quot;</span>);
-        }
         <span class="kw">if </span><span class="self">self</span>.copy {
             s.push(<span class="string">&quot;Copy&quot;</span>);
         }
         <span class="kw">if </span><span class="self">self</span>.rename {
             s.push(<span class="string">&quot;Rename&quot;</span>);
         }
+        <span class="kw">if </span><span class="self">self</span>.list {
+            s.push(<span class="string">&quot;List&quot;</span>);
+        }
+        <span class="kw">if </span><span class="self">self</span>.scan {
+            s.push(<span class="string">&quot;Scan&quot;</span>);
+        }
         <span class="kw">if </span><span class="self">self</span>.presign {
             s.push(<span class="string">&quot;Presign&quot;</span>);
         }
diff --git a/docs/vision/index.html b/docs/vision/index.html
index b48a6c69..96f2212b 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.8610ae2e.css">
-<link rel="preload" href="/assets/js/runtime~main.c88a8c95.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ff6ddbc8.js" as="script">
 <link rel="preload" href="/assets/js/main.e8563114.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.c88a8c95.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.ff6ddbc8.js"></script>
 <script src="/assets/js/main.e8563114.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/index.html b/index.html
index f18620f0..69cc90ab 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.8610ae2e.css">
-<link rel="preload" href="/assets/js/runtime~main.c88a8c95.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ff6ddbc8.js" as="script">
 <link rel="preload" href="/assets/js/main.e8563114.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.c88a8c95.js"></script>
+<script src="/assets/js/runtime~main.ff6ddbc8.js"></script>
 <script src="/assets/js/main.e8563114.js"></script>
 </body>
 </html>
\ No newline at end of file