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 ad478a15 deploy: 9510ca6202fc18b1432a27b7b427e530e6ce542a
ad478a15 is described below

commit ad478a153c62fba5516175909d9b9a8cc58b790d
Author: Xuanwo <[email protected]>
AuthorDate: Thu Apr 13 03:53:40 2023 +0000

    deploy: 9510ca6202fc18b1432a27b7b427e530e6ce542a
---
 404.html                                           |   4 +-
 assets/js/1db64337.cc3c04d1.js                     |   1 -
 assets/js/1db64337.f604ae2f.js                     |   1 +
 assets/js/runtime~main.93236ea5.js                 |   1 +
 assets/js/runtime~main.ab020f68.js                 |   1 -
 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/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/overview/index.html                           |   6 +-
 docs/python/opendal.html                           |  50 +-
 docs/python/search.js                              |   2 +-
 docs/rust/implementors/core/marker/trait.Freeze.js |   2 +-
 docs/rust/implementors/core/marker/trait.Send.js   |   2 +-
 docs/rust/implementors/core/marker/trait.Sync.js   |   2 +-
 docs/rust/implementors/core/marker/trait.Unpin.js  |   2 +-
 .../core/panic/unwind_safe/trait.RefUnwindSafe.js  |   2 +-
 .../core/panic/unwind_safe/trait.UnwindSafe.js     |   2 +-
 docs/rust/opendal/all.html                         |   2 +-
 docs/rust/opendal/layers/index.html                |   4 +-
 .../layers/minitrace/struct.MinitraceLayer.html    |  11 +
 docs/rust/opendal/layers/sidebar-items.js          |   2 +-
 .../rust/opendal/layers/struct.MinitraceLayer.html |  73 ++
 docs/rust/opendal/raw/trait.Layer.html             |   2 +-
 docs/rust/search-index.js                          |   2 +-
 docs/rust/source-files.js                          |   2 +-
 docs/rust/src/opendal/layers/minitrace.rs.html     | 756 +++++++++++++++++++++
 docs/rust/src/opendal/layers/mod.rs.html           |  10 +
 index.html                                         |   4 +-
 36 files changed, 955 insertions(+), 105 deletions(-)

diff --git a/404.html b/404.html
index c1eb3f1b..396f70b9 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.ab020f68.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.93236ea5.js" as="script">
 <link rel="preload" href="/assets/js/main.fe9ff58f.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.ab020f68.js"></script>
+<script src="/assets/js/runtime~main.93236ea5.js"></script>
 <script src="/assets/js/main.fe9ff58f.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/assets/js/1db64337.cc3c04d1.js b/assets/js/1db64337.cc3c04d1.js
deleted file mode 100644
index a6b9d7e4..00000000
--- a/assets/js/1db64337.cc3c04d1.js
+++ /dev/null
@@ -1 +0,0 @@
-"use 
strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[372],{6777:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>n,contentTitle:()=>a,default:()=>l,frontMatter:()=>s,metadata:()=>d,toc:()=>p});var
 o=i(7462),r=(i(7294),i(3905));const 
s={sidebar_position:1,title:"Overview"},a=void 
0,d={unversionedId:"overview",id:"overview",title:"Overview",description:"",source:"@site/docs/overview.md",sourceDirName:".",slug:"/overview",permalink:"/docs/overview",draft:!1,editUrl:
 [...]
\ No newline at end of file
diff --git a/assets/js/1db64337.f604ae2f.js b/assets/js/1db64337.f604ae2f.js
new file mode 100644
index 00000000..48534a74
--- /dev/null
+++ b/assets/js/1db64337.f604ae2f.js
@@ -0,0 +1 @@
+"use 
strict";(self.webpackChunkopendal_website=self.webpackChunkopendal_website||[]).push([[372],{6777:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>n,contentTitle:()=>s,default:()=>l,frontMatter:()=>a,metadata:()=>d,toc:()=>p});var
 o=i(7462),r=(i(7294),i(3905));const 
a={sidebar_position:1,title:"Overview"},s=void 
0,d={unversionedId:"overview",id:"overview",title:"Overview",description:"",source:"@site/docs/overview.md",sourceDirName:".",slug:"/overview",permalink:"/docs/overview",draft:!1,editUrl:
 [...]
\ No newline at end of file
diff --git a/assets/js/runtime~main.93236ea5.js 
b/assets/js/runtime~main.93236ea5.js
new file mode 100644
index 00000000..e66cc8e9
--- /dev/null
+++ b/assets/js/runtime~main.93236ea5.js
@@ -0,0 +1 @@
+(()=>{"use strict";var e,t,r,o,a,n={},c={};function f(e){var t=c[e];if(void 
0!==t)return t.exports;var r=c[e]={exports:{}};return 
n[e].call(r.exports,r,r.exports,f),r.exports}f.m=n,e=[],f.O=(t,r,o,a)=>{if(!r){var
 n=1/0;for(b=0;b<e.length;b++){r=e[b][0],o=e[b][1],a=e[b][2];for(var 
c=!0,i=0;i<r.length;i++)(!1&a||n>=a)&&Object.keys(f.O).every((e=>f.O[e](r[i])))?r.splice(i--,1):(c=!1,a<n&&(n=a));if(c){e.splice(b--,1);var
 d=o();void 0!==d&&(t=d)}}return t}a=a||0;for(var b=e.length;b>0&&e[b-1] [...]
\ No newline at end of file
diff --git a/assets/js/runtime~main.ab020f68.js 
b/assets/js/runtime~main.ab020f68.js
deleted file mode 100644
index c2bd1db0..00000000
--- a/assets/js/runtime~main.ab020f68.js
+++ /dev/null
@@ -1 +0,0 @@
-(()=>{"use strict";var e,t,r,o,a,n={},f={};function c(e){var t=f[e];if(void 
0!==t)return t.exports;var r=f[e]={exports:{}};return 
n[e].call(r.exports,r,r.exports,c),r.exports}c.m=n,e=[],c.O=(t,r,o,a)=>{if(!r){var
 n=1/0;for(b=0;b<e.length;b++){r=e[b][0],o=e[b][1],a=e[b][2];for(var 
f=!0,i=0;i<r.length;i++)(!1&a||n>=a)&&Object.keys(c.O).every((e=>c.O[e](r[i])))?r.splice(i--,1):(f=!1,a<n&&(n=a));if(f){e.splice(b--,1);var
 d=o();void 0!==d&&(t=d)}}return t}a=a||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 d5bf7081..bbc343c7 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.ab020f68.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.93236ea5.js" as="script">
 <link rel="preload" href="/assets/js/main.fe9ff58f.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.ab020f68.js"></script>
+<script src="/assets/js/runtime~main.93236ea5.js"></script>
 <script src="/assets/js/main.fe9ff58f.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/index.html b/blog/index.html
index f6ba7dea..f31368d6 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.ab020f68.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.93236ea5.js" as="script">
 <link rel="preload" href="/assets/js/main.fe9ff58f.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.ab020f68.js"></script>
+<script src="/assets/js/runtime~main.93236ea5.js"></script>
 <script src="/assets/js/main.fe9ff58f.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 db93b2ed..36e5b7b8 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.ab020f68.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.93236ea5.js" as="script">
 <link rel="preload" href="/assets/js/main.fe9ff58f.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.ab020f68.js"></script>
+<script src="/assets/js/runtime~main.93236ea5.js"></script>
 <script src="/assets/js/main.fe9ff58f.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 91a8b808..3bcc2d4d 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.ab020f68.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.93236ea5.js" as="script">
 <link rel="preload" href="/assets/js/main.fe9ff58f.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.ab020f68.js"></script>
+<script src="/assets/js/runtime~main.93236ea5.js"></script>
 <script src="/assets/js/main.fe9ff58f.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/blog/tags/index.html b/blog/tags/index.html
index 7d522007..a8767f54 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.ab020f68.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.93236ea5.js" as="script">
 <link rel="preload" href="/assets/js/main.fe9ff58f.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.ab020f68.js"></script>
+<script src="/assets/js/runtime~main.93236ea5.js"></script>
 <script src="/assets/js/main.fe9ff58f.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 b5fb4032..1c93728a 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/15783b8/bindings/nodejs/index.d.ts#L413";>index.d.ts:413</a></li></ul></aside>
+<li>Defined in <a 
href="https://github.com/apache/incubator-opendal/blob/9510ca6/bindings/nodejs/index.d.ts#L413";>index.d.ts:413</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/15783b8/bindings/nodejs/index.d.ts#L414";>index.d.ts:414</a></li></ul></aside></li></ul></section></section></div>
+<li>Defined in <a 
href="https://github.com/apache/incubator-opendal/blob/9510ca6/bindings/nodejs/index.d.ts#L414";>index.d.ts:414</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 9d737ce1..db035390 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/15783b8/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/9510ca6/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/15783b8/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/9510ca6/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 49978ab4..469445fd 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/15783b8/bindings/nodejs/index.d.ts#L402";>index.d.ts:402</a></li></ul></aside>
+<li>Defined in <a 
href="https://github.com/apache/incubator-opendal/blob/9510ca6/bindings/nodejs/index.d.ts#L402";>index.d.ts:402</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/15783b8/bindings/nodejs/index.d.ts#L411";>index.d.ts:411</a></li></ul></aside></li></ul></section></section></div>
+<li>Defined in <a 
href="https://github.com/apache/incubator-opendal/blob/9510ca6/bindings/nodejs/index.d.ts#L411";>index.d.ts:411</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 1a5cdd78..939a0a82 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/15783b8/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/9510ca6/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/15783b8/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/9510ca6/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/15783b8/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/9510ca6/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/15783b8/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/9510ca6/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/15783b8/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/9510ca6/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/15783b8/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/9510ca6/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">
@@ -113,7 +113,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/15783b8/bindings/nodejs/index.d.ts#L400";>index.d.ts:400</a></li></ul></aside></li></ul></section></section>
+<li>Defined in <a 
href="https://github.com/apache/incubator-opendal/blob/9510ca6/bindings/nodejs/index.d.ts#L400";>index.d.ts:400</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>
@@ -125,7 +125,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/15783b8/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/9510ca6/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">
@@ -135,7 +135,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/15783b8/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/9510ca6/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 a706b9dc..c9c164bb 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/15783b8/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/9510ca6/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/15783b8/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/9510ca6/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/15783b8/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/9510ca6/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/15783b8/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/9510ca6/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/15783b8/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/9510ca6/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/15783b8/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/9510ca6/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/15783b8/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/9510ca6/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/15783b8/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/9510ca6/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/15783b8/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/9510ca6/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/15783b8/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/9510ca6/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/15783b8/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/9510ca6/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/15783b8/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/9510ca6/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/15783b8/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/9510ca6/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 <a 
href="../interfaces/PresignedRequest.html" class="tsd-signature-type" 
data-tsd-kind="Interface">PresignedRequest</a></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a 
href="https://github.com/apache/incubator-opendal/blob/15783b8/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/9510ca6/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 <a 
href="../interfaces/PresignedRequest.html" class="tsd-signature-type" 
data-tsd-kind="Interface">PresignedRequest</a></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a 
href="https://github.com/apache/incubator-opendal/blob/15783b8/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/9510ca6/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 <a 
href="../interfaces/PresignedRequest.html" class="tsd-signature-type" 
data-tsd-kind="Interface">PresignedRequest</a></h4><aside class="tsd-sources">
 <ul>
-<li>Defined in <a 
href="https://github.com/apache/incubator-opendal/blob/15783b8/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/9510ca6/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/15783b8/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/9510ca6/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/15783b8/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/9510ca6/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/15783b8/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/9510ca6/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/15783b8/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/9510ca6/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/15783b8/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/9510ca6/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/15783b8/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/9510ca6/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/15783b8/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/9510ca6/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/15783b8/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/9510ca6/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/15783b8/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/9510ca6/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/15783b8/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/9510ca6/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/15783b8/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/9510ca6/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/15783b8/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/9510ca6/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 0d13ecd5..6d5df39e 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/15783b8/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/9510ca6/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/15783b8/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/9510ca6/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/15783b8/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/9510ca6/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/15783b8/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/9510ca6/bindings/nodejs/index.d.ts#L29";>index.d.ts:29</a></li></ul></aside></section></section></div>
 <div class="col-4 col-menu menu-sticky-wrap menu-highlight">
 <div class="tsd-navigation settings">
 <details class="tsd-index-accordion"><summary class="tsd-accordion-summary">
diff --git a/docs/overview/index.html b/docs/overview/index.html
index 1e5de5d2..46af72c6 100644
--- a/docs/overview/index.html
+++ b/docs/overview/index.html
@@ -5,13 +5,13 @@
 <meta name="generator" content="Docusaurus v2.3.1">
 <title data-rh="true">Overview | Apache OpenDAL</title><meta data-rh="true" 
name="viewport" content="width=device-width,initial-scale=1"><meta 
data-rh="true" name="twitter:card" content="summary_large_image"><meta 
data-rh="true" property="og:url" 
content="https://opendal.apache.org/docs/overview";><meta data-rh="true" 
name="docusaurus_locale" content="en"><meta data-rh="true" 
name="docsearch:language" content="en"><meta data-rh="true" 
name="docusaurus_version" content="current"><meta data [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache OpenDAL Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.8610ae2e.css">
-<link rel="preload" href="/assets/js/runtime~main.ab020f68.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.93236ea5.js" as="script">
 <link rel="preload" href="/assets/js/main.fe9ff58f.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.ab020f68.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.93236ea5.js"></script>
 <script src="/assets/js/main.fe9ff58f.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/python/opendal.html b/docs/python/opendal.html
index a30bc66d..879bbe25 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.mode">mode</a>
+                                <a class="variable" 
href="#Metadata.content_md5">content_md5</a>
                         </li>
                         <li>
-                                <a class="variable" 
href="#Metadata.content_length">content_length</a>
+                                <a class="variable" 
href="#Metadata.etag">etag</a>
                         </li>
                         <li>
-                                <a class="variable" 
href="#Metadata.content_md5">content_md5</a>
+                                <a class="variable" 
href="#Metadata.mode">mode</a>
                         </li>
                         <li>
-                                <a class="variable" 
href="#Metadata.etag">etag</a>
+                                <a class="variable" 
href="#Metadata.content_type">content_type</a>
                         </li>
                         <li>
-                                <a class="variable" 
href="#Metadata.content_type">content_type</a>
+                                <a class="variable" 
href="#Metadata.content_length">content_length</a>
                         </li>
                 </ul>
 
@@ -852,67 +852,67 @@ The default value for whence is <code>SEEK_SET</code>. 
Values for <code>whence</
     
     
 
-                            <div id="Metadata.mode" class="classattr">
+                            <div id="Metadata.content_md5" class="classattr">
                                 <div class="attr variable">
-            <span class="name">mode</span><span class="annotation">: <a 
href="#EntryMode">opendal.EntryMode</a></span>
+            <span class="name">content_md5</span><span class="annotation">: 
Optional[str]</span>
 
         
     </div>
-    <a class="headerlink" href="#Metadata.mode"></a>
+    <a class="headerlink" href="#Metadata.content_md5"></a>
     
-            <div class="docstring"><p>mode represent this entry's mode.</p>
+            <div class="docstring"><p>Content MD5 of this entry.</p>
 </div>
 
 
                             </div>
-                            <div id="Metadata.content_length" 
class="classattr">
+                            <div id="Metadata.etag" class="classattr">
                                 <div class="attr variable">
-            <span class="name">content_length</span><span class="annotation">: 
int</span>
+            <span class="name">etag</span><span class="annotation">: 
Optional[str]</span>
 
         
     </div>
-    <a class="headerlink" href="#Metadata.content_length"></a>
+    <a class="headerlink" href="#Metadata.etag"></a>
     
-            <div class="docstring"><p>Content length of this entry.</p>
+            <div class="docstring"><p>ETag of this entry.</p>
 </div>
 
 
                             </div>
-                            <div id="Metadata.content_md5" class="classattr">
+                            <div id="Metadata.mode" class="classattr">
                                 <div class="attr variable">
-            <span class="name">content_md5</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.content_md5"></a>
+    <a class="headerlink" href="#Metadata.mode"></a>
     
-            <div class="docstring"><p>Content MD5 of this entry.</p>
+            <div class="docstring"><p>mode represent this entry's mode.</p>
 </div>
 
 
                             </div>
-                            <div id="Metadata.etag" class="classattr">
+                            <div id="Metadata.content_type" class="classattr">
                                 <div class="attr variable">
-            <span class="name">etag</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.etag"></a>
+    <a class="headerlink" href="#Metadata.content_type"></a>
     
-            <div class="docstring"><p>ETag of this entry.</p>
+            <div class="docstring"><p>Content Type 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>
 
 
diff --git a/docs/python/search.js b/docs/python/search.js
index 6b3b8a1e..97fd334b 100644
--- a/docs/python/search.js
+++ b/docs/python/search.js
@@ -1,6 +1,6 @@
 window.pdocSearch = (function(){
 /** elasticlunr - http://weixsong.github.io * Copyright (C) 2017 Oliver 
Nightingale * Copyright (C) 2017 Wei Song * MIT Licensed */!function(){function 
e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n 
in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new 
t.Index;return 
n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return
 function(t){e.console&&console.wa [...]
-    /** pdoc search index */const docs = {"version": "0.9.5", "fields": 
["qualname", "fullname", "annotation", "default_value", "signature", "bases", 
"doc"], "ref": "fullname", "documentStore": {"docs": {"opendal": {"fullname": 
"opendal", "modulename": "opendal", "kind": "module", "doc": "<p>OpenDAL Python 
binding</p>\n\n<h2 id=\"installation\">Installation</h2>\n\n<div 
class=\"pdoc-code codehilite\">\n<pre><span></span><code>pip<span class=\"w\"> 
</span>install<span class=\"w\"> </span> [...]
+    /** pdoc search index */const docs = {"version": "0.9.5", "fields": 
["qualname", "fullname", "annotation", "default_value", "signature", "bases", 
"doc"], "ref": "fullname", "documentStore": {"docs": {"opendal": {"fullname": 
"opendal", "modulename": "opendal", "kind": "module", "doc": "<p>OpenDAL Python 
binding</p>\n\n<h2 id=\"installation\">Installation</h2>\n\n<div 
class=\"pdoc-code codehilite\">\n<pre><span></span><code>pip<span class=\"w\"> 
</span>install<span class=\"w\"> </span> [...]
 
     // mirrored in build-search-index.js (part 1)
     // Also split on html tags. this is a cheap heuristic, but good enough.
diff --git a/docs/rust/implementors/core/marker/trait.Freeze.js 
b/docs/rust/implementors/core/marker/trait.Freeze.js
index ab59b347..9cf0229c 100644
--- a/docs/rust/implementors/core/marker/trait.Freeze.js
+++ b/docs/rust/implementors/core/marker/trait.Freeze.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl Freeze for <a class=\"enum\" 
href=\"opendal/enum.EntryMode.html\" title=\"enum 
opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl
 Freeze for <a class=\"struct\" href=\"opendal/struct.Entry.html\" 
title=\"struct 
opendal::Entry\">Entry</a>",1,["opendal::types::entry::Entry"]],["impl Freeze 
for <a class=\"struct\" href=\"opendal/struct.Metadata.html\" title=\"struct 
opendal::Metadata\">Metadata</a>",1,["opendal::types::metadata::Metadata"]],[ 
[...]
+"opendal":[["impl Freeze for <a class=\"enum\" 
href=\"opendal/enum.EntryMode.html\" title=\"enum 
opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl
 Freeze for <a class=\"struct\" href=\"opendal/struct.Entry.html\" 
title=\"struct 
opendal::Entry\">Entry</a>",1,["opendal::types::entry::Entry"]],["impl Freeze 
for <a class=\"struct\" href=\"opendal/struct.Metadata.html\" title=\"struct 
opendal::Metadata\">Metadata</a>",1,["opendal::types::metadata::Metadata"]],[ 
[...]
 };if (window.register_implementors) 
{window.register_implementors(implementors);} else {window.pending_implementors 
= implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/marker/trait.Send.js 
b/docs/rust/implementors/core/marker/trait.Send.js
index 840bf7c6..17f93084 100644
--- a/docs/rust/implementors/core/marker/trait.Send.js
+++ b/docs/rust/implementors/core/marker/trait.Send.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" 
href=\"https://doc.rust-lang.org/1.68.2/core/marker/trait.Send.html\"; 
title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" 
href=\"opendal/enum.EntryMode.html\" title=\"enum 
opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl
 <a class=\"trait\" 
href=\"https://doc.rust-lang.org/1.68.2/core/marker/trait.Send.html\"; 
title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" 
href=\"opendal/struct.Entry.ht [...]
+"opendal":[["impl <a class=\"trait\" 
href=\"https://doc.rust-lang.org/1.68.2/core/marker/trait.Send.html\"; 
title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" 
href=\"opendal/enum.EntryMode.html\" title=\"enum 
opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl
 <a class=\"trait\" 
href=\"https://doc.rust-lang.org/1.68.2/core/marker/trait.Send.html\"; 
title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" 
href=\"opendal/struct.Entry.ht [...]
 };if (window.register_implementors) 
{window.register_implementors(implementors);} else {window.pending_implementors 
= implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/marker/trait.Sync.js 
b/docs/rust/implementors/core/marker/trait.Sync.js
index 11dec01c..c2b9845c 100644
--- a/docs/rust/implementors/core/marker/trait.Sync.js
+++ b/docs/rust/implementors/core/marker/trait.Sync.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" 
href=\"https://doc.rust-lang.org/1.68.2/core/marker/trait.Sync.html\"; 
title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" 
href=\"opendal/enum.EntryMode.html\" title=\"enum 
opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl
 <a class=\"trait\" 
href=\"https://doc.rust-lang.org/1.68.2/core/marker/trait.Sync.html\"; 
title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" 
href=\"opendal/struct.Entry.ht [...]
+"opendal":[["impl <a class=\"trait\" 
href=\"https://doc.rust-lang.org/1.68.2/core/marker/trait.Sync.html\"; 
title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" 
href=\"opendal/enum.EntryMode.html\" title=\"enum 
opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl
 <a class=\"trait\" 
href=\"https://doc.rust-lang.org/1.68.2/core/marker/trait.Sync.html\"; 
title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" 
href=\"opendal/struct.Entry.ht [...]
 };if (window.register_implementors) 
{window.register_implementors(implementors);} else {window.pending_implementors 
= implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/marker/trait.Unpin.js 
b/docs/rust/implementors/core/marker/trait.Unpin.js
index f732b989..65c68629 100644
--- a/docs/rust/implementors/core/marker/trait.Unpin.js
+++ b/docs/rust/implementors/core/marker/trait.Unpin.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" 
href=\"https://doc.rust-lang.org/1.68.2/core/marker/trait.Unpin.html\"; 
title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" 
href=\"opendal/enum.EntryMode.html\" title=\"enum 
opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl
 <a class=\"trait\" 
href=\"https://doc.rust-lang.org/1.68.2/core/marker/trait.Unpin.html\"; 
title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" 
href=\"opendal/struct.En [...]
+"opendal":[["impl <a class=\"trait\" 
href=\"https://doc.rust-lang.org/1.68.2/core/marker/trait.Unpin.html\"; 
title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" 
href=\"opendal/enum.EntryMode.html\" title=\"enum 
opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl
 <a class=\"trait\" 
href=\"https://doc.rust-lang.org/1.68.2/core/marker/trait.Unpin.html\"; 
title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" 
href=\"opendal/struct.En [...]
 };if (window.register_implementors) 
{window.register_implementors(implementors);} else {window.pending_implementors 
= implementors;}})()
\ No newline at end of file
diff --git 
a/docs/rust/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js 
b/docs/rust/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
index 7b34a8f9..a5d9e012 100644
--- a/docs/rust/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
+++ b/docs/rust/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" 
href=\"https://doc.rust-lang.org/1.68.2/core/panic/unwind_safe/trait.RefUnwindSafe.html\";
 title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for 
<a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum 
opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl
 <a class=\"trait\" 
href=\"https://doc.rust-lang.org/1.68.2/core/panic/unwind_safe/trait.RefUnwindSafe.html\";
 title=\"trait core::panic::u [...]
+"opendal":[["impl <a class=\"trait\" 
href=\"https://doc.rust-lang.org/1.68.2/core/panic/unwind_safe/trait.RefUnwindSafe.html\";
 title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for 
<a class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum 
opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl
 <a class=\"trait\" 
href=\"https://doc.rust-lang.org/1.68.2/core/panic/unwind_safe/trait.RefUnwindSafe.html\";
 title=\"trait core::panic::u [...]
 };if (window.register_implementors) 
{window.register_implementors(implementors);} else {window.pending_implementors 
= implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/implementors/core/panic/unwind_safe/trait.UnwindSafe.js 
b/docs/rust/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
index ad6bea62..9b115a8b 100644
--- a/docs/rust/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
+++ b/docs/rust/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"opendal":[["impl <a class=\"trait\" 
href=\"https://doc.rust-lang.org/1.68.2/core/panic/unwind_safe/trait.UnwindSafe.html\";
 title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a 
class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum 
opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl
 <a class=\"trait\" 
href=\"https://doc.rust-lang.org/1.68.2/core/panic/unwind_safe/trait.UnwindSafe.html\";
 title=\"trait core::panic::unwind_safe:: [...]
+"opendal":[["impl <a class=\"trait\" 
href=\"https://doc.rust-lang.org/1.68.2/core/panic/unwind_safe/trait.UnwindSafe.html\";
 title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a 
class=\"enum\" href=\"opendal/enum.EntryMode.html\" title=\"enum 
opendal::EntryMode\">EntryMode</a>",1,["opendal::types::mode::EntryMode"]],["impl
 <a class=\"trait\" 
href=\"https://doc.rust-lang.org/1.68.2/core/panic/unwind_safe/trait.UnwindSafe.html\";
 title=\"trait core::panic::unwind_safe:: [...]
 };if (window.register_implementors) 
{window.register_implementors(implementors);} else {window.pending_implementors 
= implementors;}})()
\ No newline at end of file
diff --git a/docs/rust/opendal/all.html b/docs/rust/opendal/all.html
index 7ac33867..8d60b39d 100644
--- a/docs/rust/opendal/all.html
+++ b/docs/rust/opendal/all.html
@@ -1 +1 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta 
name="viewport" content="width=device-width, initial-scale=1.0"><meta 
name="generator" content="rustdoc"><meta name="description" content="List of 
all items in this crate"><meta name="keywords" content="rust, rustlang, 
rust-lang"><title>List of all items in this crate</title><link rel="preload" 
as="font" type="font/woff2" crossorigin 
href="../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link 
rel="preload"  [...]
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta 
name="viewport" content="width=device-width, initial-scale=1.0"><meta 
name="generator" content="rustdoc"><meta name="description" content="List of 
all items in this crate"><meta name="keywords" content="rust, rustlang, 
rust-lang"><title>List of all items in this crate</title><link rel="preload" 
as="font" type="font/woff2" crossorigin 
href="../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link 
rel="preload"  [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/layers/index.html 
b/docs/rust/opendal/layers/index.html
index c8e75dd7..ee547c4f 100644
--- a/docs/rust/opendal/layers/index.html
+++ b/docs/rust/opendal/layers/index.html
@@ -1,2 +1,2 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta 
name="viewport" content="width=device-width, initial-scale=1.0"><meta 
name="generator" content="rustdoc"><meta name="description" content="`Layer` is 
the mechanism to intercept operations."><meta name="keywords" content="rust, 
rustlang, rust-lang, layers"><title>opendal::layers - Rust</title><link 
rel="preload" as="font" type="font/woff2" crossorigin 
href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"> [...]
-</div></details><h2 id="structs" class="small-section-header"><a 
href="#structs">Structs</a></h2><div class="item-table"><div 
class="item-row"><div class="item-left module-item"><a class="struct" 
href="struct.ChaosLayer.html" title="opendal::layers::ChaosLayer 
struct">ChaosLayer</a></div><div class="item-right docblock-short">Inject chaos 
into underlying services for robustness test.</div></div><div 
class="item-row"><div class="item-left module-item"><a class="struct" 
href="struct.Concur [...]
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta 
name="viewport" content="width=device-width, initial-scale=1.0"><meta 
name="generator" content="rustdoc"><meta name="description" content="`Layer` is 
the mechanism to intercept operations."><meta name="keywords" content="rust, 
rustlang, rust-lang, layers"><title>opendal::layers - Rust</title><link 
rel="preload" as="font" type="font/woff2" crossorigin 
href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"> [...]
+</div></details><h2 id="structs" class="small-section-header"><a 
href="#structs">Structs</a></h2><div class="item-table"><div 
class="item-row"><div class="item-left module-item"><a class="struct" 
href="struct.ChaosLayer.html" title="opendal::layers::ChaosLayer 
struct">ChaosLayer</a></div><div class="item-right docblock-short">Inject chaos 
into underlying services for robustness test.</div></div><div 
class="item-row"><div class="item-left module-item"><a class="struct" 
href="struct.Concur [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/layers/minitrace/struct.MinitraceLayer.html 
b/docs/rust/opendal/layers/minitrace/struct.MinitraceLayer.html
new file mode 100644
index 00000000..f7cb0b4d
--- /dev/null
+++ b/docs/rust/opendal/layers/minitrace/struct.MinitraceLayer.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="refresh" 
content="0;URL=../../../opendal/layers/struct.MinitraceLayer.html">
+    <title>Redirection</title>
+</head>
+<body>
+    <p>Redirecting to <a 
href="../../../opendal/layers/struct.MinitraceLayer.html">../../../opendal/layers/struct.MinitraceLayer.html</a>...</p>
+    
<script>location.replace("../../../opendal/layers/struct.MinitraceLayer.html" + 
location.search + location.hash);</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/rust/opendal/layers/sidebar-items.js 
b/docs/rust/opendal/layers/sidebar-items.js
index f43d82eb..b2e2b682 100644
--- a/docs/rust/opendal/layers/sidebar-items.js
+++ b/docs/rust/opendal/layers/sidebar-items.js
@@ -1 +1 @@
-window.SIDEBAR_ITEMS = {"struct":[["ChaosLayer","Inject chaos into underlying 
services for robustness test."],["ConcurrentLimitLayer","Add concurrent request 
limit."],["ImmutableIndexLayer","Add an immutable in-memory index for 
underlying storage services."],["LoggingLayer","Add log for every 
operations."],["MetricsLayer","Add metrics for every 
operations."],["RetryLayer","Add retry for temporary failed 
operations."],["TracingLayer","Add tracing for every operations."]]};
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"struct":[["ChaosLayer","Inject chaos into underlying 
services for robustness test."],["ConcurrentLimitLayer","Add concurrent request 
limit."],["ImmutableIndexLayer","Add an immutable in-memory index for 
underlying storage services."],["LoggingLayer","Add log for every 
operations."],["MetricsLayer","Add metrics for every 
operations."],["MinitraceLayer","Add minitrace for every 
operations."],["RetryLayer","Add retry for temporary failed 
operations."],["TracingLayer [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/layers/struct.MinitraceLayer.html 
b/docs/rust/opendal/layers/struct.MinitraceLayer.html
new file mode 100644
index 00000000..61ea9458
--- /dev/null
+++ b/docs/rust/opendal/layers/struct.MinitraceLayer.html
@@ -0,0 +1,73 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta 
name="viewport" content="width=device-width, initial-scale=1.0"><meta 
name="generator" content="rustdoc"><meta name="description" content="Add 
minitrace for every operations."><meta name="keywords" content="rust, rustlang, 
rust-lang, MinitraceLayer"><title>MinitraceLayer in opendal::layers - 
Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin 
href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72 [...]
+<h2 id="examples"><a href="#examples">Examples</a></h2><h3 id="basic-setup"><a 
href="#basic-setup">Basic Setup</a></h3>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span 
class="kw">use </span>anyhow::Result;
+<span class="kw">use </span>opendal::layers::MinitraceLayer;
+<span class="kw">use </span>opendal::services;
+<span class="kw">use </span>opendal::Operator;
+
+<span class="kw">let _ </span>= Operator::new(services::Memory::default())
+    .expect(<span class="string">&quot;must init&quot;</span>)
+    .layer(MinitraceLayer)
+    .finish();</code></pre></div>
+<h3 id="real-usage"><a href="#real-usage">Real usage</a></h3>
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span 
class="kw">use </span>std::error::Error;
+
+<span class="kw">use </span>anyhow::Result;
+<span class="kw">use </span>futures::executor::block_on;
+<span class="kw">use </span>opendal::layers::MinitraceLayer;
+<span class="kw">use </span>opendal::services;
+<span class="kw">use </span>opendal::Operator;
+
+<span class="kw">fn </span>main() -&gt; <span 
class="prelude-ty">Result</span>&lt;(), Box&lt;<span class="kw">dyn 
</span>Error + Send + Sync + <span class="lifetime">&#39;static</span>&gt;&gt; {
+    <span class="kw">let </span>collector = {
+        <span class="kw">let </span>(span, collector) = 
minitrace::Span::root(<span class="string">&quot;op&quot;</span>);
+        <span class="kw">let </span>_g = span.set_local_parent();
+        <span class="kw">let </span>runtime = 
tokio::runtime::Runtime::new()<span class="question-mark">?</span>;
+
+        runtime.block_on(<span class="kw">async </span>{
+            <span class="kw">let _ </span>= dotenvy::dotenv();
+            <span class="kw">let </span>op = 
Operator::from_env::&lt;services::Memory&gt;()
+                .expect(<span class="string">&quot;init operator must 
succeed&quot;</span>)
+                .layer(MinitraceLayer)
+                .finish();
+
+            op.write(<span class="string">&quot;test&quot;</span>, <span 
class="string">&quot;0&quot;</span>.repeat(<span class="number">16 </span>* 
<span class="number">1024 </span>* <span 
class="number">1024</span>).into_bytes())
+                .<span class="kw">await
+                </span>.expect(<span class="string">&quot;must 
succeed&quot;</span>);
+            op.stat(<span class="string">&quot;test&quot;</span>).<span 
class="kw">await</span>.expect(<span class="string">&quot;must 
succeed&quot;</span>);
+            op.read(<span class="string">&quot;test&quot;</span>).<span 
class="kw">await</span>.expect(<span class="string">&quot;must 
succeed&quot;</span>);
+        });
+        collector
+    };
+
+    <span class="kw">let </span>spans = block_on(collector.collect());
+
+    <span class="kw">let </span>bytes =
+        minitrace_jaeger::encode(<span 
class="string">&quot;opendal&quot;</span>.to_owned(), rand::random(), <span 
class="number">0</span>, <span class="number">0</span>, <span 
class="kw-2">&amp;</span>spans).unwrap();
+    minitrace_jaeger::report_blocking(<span 
class="string">&quot;127.0.0.1:6831&quot;</span>.parse().unwrap(), <span 
class="kw-2">&amp;</span>bytes)
+        .expect(<span class="string">&quot;report error&quot;</span>);
+
+    <span class="prelude-val">Ok</span>(())
+}</code></pre></div>
+<h2 id="output"><a href="#output">Output</a></h2>
+<p>OpenDAL is using <a 
href="https://docs.rs/minitrace/latest/minitrace/";><code>minitrace</code></a> 
for tracing internally.</p>
+<p>To enable minitrace output, please init one of the reporter that 
<code>minitrace</code> supports.</p>
+<p>For example:</p>
+
+<div class="example-wrap ignore"><div class='tooltip'>ⓘ</div><pre class="rust 
rust-example-rendered"><code><span class="kw">extern crate 
</span>minitrace_jaeger;
+
+<span class="kw">let </span>spans = block_on(collector.collect());
+
+<span class="kw">let </span>bytes =
+    minitrace_jaeger::encode(<span 
class="string">&quot;opendal&quot;</span>.to_owned(), rand::random(), <span 
class="number">0</span>, <span class="number">0</span>, <span 
class="kw-2">&amp;</span>spans).unwrap();
+minitrace_jaeger::report_blocking(<span 
class="string">&quot;127.0.0.1:6831&quot;</span>.parse().unwrap(), <span 
class="kw-2">&amp;</span>bytes).expect(<span class="string">&quot;report 
error&quot;</span>);</code></pre></div>
+<p>For real-world usage, please take a look at <a 
href="https://crates.io/crates/minitrace-datadog";><code>minitrace-datadog</code></a>
 or <a 
href="https://crates.io/crates/minitrace-jaeger";><code>minitrace-jaeger</code></a>
 .</p>
+</div></details><h2 id="trait-implementations" 
class="small-section-header">Trait Implementations<a 
href="#trait-implementations" class="anchor">§</a></h2><div 
id="trait-implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-Layer%3CA%3E-for-MinitraceLayer" class="impl 
has-srclink"><a class="srclink rightside" 
href="../../src/opendal/layers/minitrace.rs.html#116-122">source</a><a 
href="#impl-Layer%3CA%3E-for-MinitraceLayer" class="anchor">§</a>< [...]
+</div></details></div></details><details class="toggle 
implementors-toggle"><summary><section id="impl-Instrument-for-MinitraceLayer" 
class="impl has-srclink"><a class="srclink rightside" 
href="https://docs.rs/tracing/0.1.37/src/tracing/instrument.rs.html#276";>source</a><a
 href="#impl-Instrument-for-MinitraceLayer" class="anchor">§</a><h3 
class="code-header">impl&lt;T&gt; <a class="trait" 
href="https://docs.rs/tracing/0.1.37/tracing/instrument/trait.Instrument.html"; 
title="trait tracing: [...]
+<code>Instrumented</code> wrapper. <a 
href="https://docs.rs/tracing/0.1.37/tracing/instrument/trait.Instrument.html#method.instrument";>Read
 more</a></div></details><details class="toggle method-toggle" 
open><summary><section id="method.in_current_span" class="method trait-impl 
has-srclink"><a class="srclink rightside" 
href="https://docs.rs/tracing/0.1.37/src/tracing/instrument.rs.html#121";>source</a><a
 href="#method.in_current_span" class="anchor">§</a><h4 class="code-header">fn 
<a href= [...]
+<code>Instrumented</code> wrapper. <a 
href="https://docs.rs/tracing/0.1.37/tracing/instrument/trait.Instrument.html#method.in_current_span";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-MinitraceLayer" 
class="impl has-srclink"><a class="srclink rightside" 
href="https://doc.rust-lang.org/1.68.2/src/core/convert/mod.rs.html#717";>source</a><a
 href="#impl-Into%3CU%3E-for-MinitraceLayer" class="anchor">§</a> [...]
+<p>That is, this conversion is whatever the implementation of
+<code><a href="https://doc.rust-lang.org/1.68.2/core/convert/trait.From.html"; 
title="From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
+</div></details></div></details><details class="toggle 
implementors-toggle"><summary><section id="impl-Pointable-for-MinitraceLayer" 
class="impl has-srclink"><a href="#impl-Pointable-for-MinitraceLayer" 
class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; Pointable for 
T</h3></section></summary><div class="impl-items"><details class="toggle" 
open><summary><section id="associatedconstant.ALIGN" class="associatedconstant 
trait-impl has-srclink"><a href="#associatedconstant.ALIGN" clas [...]
+<a 
href="https://docs.rs/tracing/0.1.37/tracing/instrument/struct.WithDispatch.html";
 title="WithDispatch"><code>WithDispatch</code></a> wrapper. <a 
href="https://docs.rs/tracing/0.1.37/tracing/instrument/trait.WithSubscriber.html#method.with_subscriber";>Read
 more</a></div></details><details class="toggle method-toggle" 
open><summary><section id="method.with_current_subscriber" class="method 
trait-impl has-srclink"><a class="srclink rightside" 
href="https://docs.rs/tracing/0.1.37/src/trac [...]
+<a 
href="https://docs.rs/tracing/0.1.37/tracing/instrument/struct.WithDispatch.html";
 title="WithDispatch"><code>WithDispatch</code></a> wrapper. <a 
href="https://docs.rs/tracing/0.1.37/tracing/instrument/trait.WithSubscriber.html#method.with_current_subscriber";>Read
 more</a></div></details></div></details></div></section></div></main><div 
id="rustdoc-vars" data-root-path="../../" 
data-static-root-path="../../static.files/" data-current-crate="opendal" 
data-themes="" data-resource-suffix= [...]
\ No newline at end of file
diff --git a/docs/rust/opendal/raw/trait.Layer.html 
b/docs/rust/opendal/raw/trait.Layer.html
index f64f5be4..4dd1ed10 100644
--- a/docs/rust/opendal/raw/trait.Layer.html
+++ b/docs/rust/opendal/raw/trait.Layer.html
@@ -94,4 +94,4 @@ requires <code>Send</code> and <code>Sync</code>.</p>
 }</code></pre></div>
 </div></details><h2 id="required-associated-types" 
class="small-section-header">Required Associated Types<a 
href="#required-associated-types" class="anchor">§</a></h2><div 
class="methods"><details class="toggle" open><summary><section 
id="associatedtype.LayeredAccessor" class="method has-srclink"><a 
class="srclink rightside" 
href="../../src/opendal/raw/layer.rs.html#129">source</a><h4 
class="code-header">type <a href="#associatedtype.LayeredAccessor" 
class="associatedtype">LayeredAccesso [...]
 </div></details></div><h2 id="required-methods" 
class="small-section-header">Required Methods<a href="#required-methods" 
class="anchor">§</a></h2><div class="methods"><details class="toggle 
method-toggle" open><summary><section id="tymethod.layer" class="method 
has-srclink"><a class="srclink rightside" 
href="../../src/opendal/raw/layer.rs.html#132">source</a><h4 
class="code-header">fn <a href="#tymethod.layer" 
class="fn">layer</a>(&amp;self, inner: A) -&gt; Self::<a class="associatedtype 
[...]
-</div></details></div><h2 id="implementors" 
class="small-section-header">Implementors<a href="#implementors" 
class="anchor">§</a></h2><div id="implementors-list"><details class="toggle 
implementors-toggle"><summary><section id="impl-Layer%3CA%3E-for-ChaosLayer" 
class="impl has-srclink"><a class="srclink rightside" 
href="../../src/opendal/layers/chaos.rs.html#83-93">source</a><a 
href="#impl-Layer%3CA%3E-for-ChaosLayer" class="anchor">§</a><h3 
class="code-header">impl&lt;A:&nbsp;<a class=" [...]
\ No newline at end of file
+</div></details></div><h2 id="implementors" 
class="small-section-header">Implementors<a href="#implementors" 
class="anchor">§</a></h2><div id="implementors-list"><details class="toggle 
implementors-toggle"><summary><section id="impl-Layer%3CA%3E-for-ChaosLayer" 
class="impl has-srclink"><a class="srclink rightside" 
href="../../src/opendal/layers/chaos.rs.html#83-93">source</a><a 
href="#impl-Layer%3CA%3E-for-ChaosLayer" class="anchor">§</a><h3 
class="code-header">impl&lt;A:&nbsp;<a class=" [...]
\ No newline at end of file
diff --git a/docs/rust/search-index.js b/docs/rust/search-index.js
index 3f729776..0eaa889f 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>, 
<strong>painlessly</strong>…","t":[16,13,13,13,3,3,3,3,8,13,13,13,13,13,13,13,13,13,13,3,4,3,4,13,13,13,13,13,13,13,13,13,13,13,13,13,3,13,13,3,4,13,13,13,13,13,3,3,3,13,13,13,3,13,6,13,13,18,4,13,13,13,13,13,13,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11
 [...]
+"opendal":{"doc":"OpenDAL is the Open Data Access Layer to 
<strong>freely</strong>, 
<strong>painlessly</strong>…","t":[16,13,13,13,3,3,3,3,8,13,13,13,13,13,13,13,13,13,13,3,4,3,4,13,13,13,13,13,13,13,13,13,13,13,13,13,3,13,13,3,4,13,13,13,13,13,3,3,3,13,13,13,3,13,6,13,13,18,4,13,13,13,13,13,13,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11
 [...]
 }');
 if (typeof window !== 'undefined' && window.initSearch) 
{window.initSearch(searchIndex)};
 if (typeof exports !== 'undefined') {exports.searchIndex = searchIndex};
diff --git a/docs/rust/source-files.js b/docs/rust/source-files.js
index 417d0a58..fbe26cf3 100644
--- a/docs/rust/source-files.js
+++ b/docs/rust/source-files.js
@@ -1,4 +1,4 @@
 var sourcesIndex = JSON.parse('{\
-"opendal":["",[["docs",[["comparisons",[],["mod.rs"]],["internals",[],["accessor.rs","layer.rs","mod.rs"]],["rfcs",[],["mod.rs"]]],["concepts.rs","mod.rs"]],["layers",[],["chaos.rs","complete.rs","concurrent_limit.rs","error_context.rs","immutable_index.rs","logging.rs","metrics.rs","mod.rs","retry.rs","tracing.rs","type_eraser.rs"]],["raw",[["adapters",[["kv",[],["api.rs","backend.rs","mod.rs"]]],["mod.rs"]],["http_util",[],["body.rs","bytes_content_range.rs","bytes_range.rs","client.rs
 [...]
+"opendal":["",[["docs",[["comparisons",[],["mod.rs"]],["internals",[],["accessor.rs","layer.rs","mod.rs"]],["rfcs",[],["mod.rs"]]],["concepts.rs","mod.rs"]],["layers",[],["chaos.rs","complete.rs","concurrent_limit.rs","error_context.rs","immutable_index.rs","logging.rs","metrics.rs","minitrace.rs","mod.rs","retry.rs","tracing.rs","type_eraser.rs"]],["raw",[["adapters",[["kv",[],["api.rs","backend.rs","mod.rs"]]],["mod.rs"]],["http_util",[],["body.rs","bytes_content_range.rs","bytes_range
 [...]
 }');
 createSourceSidebar();
diff --git a/docs/rust/src/opendal/layers/minitrace.rs.html 
b/docs/rust/src/opendal/layers/minitrace.rs.html
new file mode 100644
index 00000000..5742e5e8
--- /dev/null
+++ b/docs/rust/src/opendal/layers/minitrace.rs.html
@@ -0,0 +1,756 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta 
name="viewport" content="width=device-width, initial-scale=1.0"><meta 
name="generator" content="rustdoc"><meta name="description" content="Source of 
the Rust file `core/src/layers/minitrace.rs`."><meta name="keywords" 
content="rust, rustlang, rust-lang"><title>minitrace.rs - source</title><link 
rel="preload" as="font" type="font/woff2" crossorigin 
href="../../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"> 
[...]
+<a href="#2" id="2">2</a>
+<a href="#3" id="3">3</a>
+<a href="#4" id="4">4</a>
+<a href="#5" id="5">5</a>
+<a href="#6" id="6">6</a>
+<a href="#7" id="7">7</a>
+<a href="#8" id="8">8</a>
+<a href="#9" id="9">9</a>
+<a href="#10" id="10">10</a>
+<a href="#11" id="11">11</a>
+<a href="#12" id="12">12</a>
+<a href="#13" id="13">13</a>
+<a href="#14" id="14">14</a>
+<a href="#15" id="15">15</a>
+<a href="#16" id="16">16</a>
+<a href="#17" id="17">17</a>
+<a href="#18" id="18">18</a>
+<a href="#19" id="19">19</a>
+<a href="#20" id="20">20</a>
+<a href="#21" id="21">21</a>
+<a href="#22" id="22">22</a>
+<a href="#23" id="23">23</a>
+<a href="#24" id="24">24</a>
+<a href="#25" id="25">25</a>
+<a href="#26" id="26">26</a>
+<a href="#27" id="27">27</a>
+<a href="#28" id="28">28</a>
+<a href="#29" id="29">29</a>
+<a href="#30" id="30">30</a>
+<a href="#31" id="31">31</a>
+<a href="#32" id="32">32</a>
+<a href="#33" id="33">33</a>
+<a href="#34" id="34">34</a>
+<a href="#35" id="35">35</a>
+<a href="#36" id="36">36</a>
+<a href="#37" id="37">37</a>
+<a href="#38" id="38">38</a>
+<a href="#39" id="39">39</a>
+<a href="#40" id="40">40</a>
+<a href="#41" id="41">41</a>
+<a href="#42" id="42">42</a>
+<a href="#43" id="43">43</a>
+<a href="#44" id="44">44</a>
+<a href="#45" id="45">45</a>
+<a href="#46" id="46">46</a>
+<a href="#47" id="47">47</a>
+<a href="#48" id="48">48</a>
+<a href="#49" id="49">49</a>
+<a href="#50" id="50">50</a>
+<a href="#51" id="51">51</a>
+<a href="#52" id="52">52</a>
+<a href="#53" id="53">53</a>
+<a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</a>
+<a href="#60" id="60">60</a>
+<a href="#61" id="61">61</a>
+<a href="#62" id="62">62</a>
+<a href="#63" id="63">63</a>
+<a href="#64" id="64">64</a>
+<a href="#65" id="65">65</a>
+<a href="#66" id="66">66</a>
+<a href="#67" id="67">67</a>
+<a href="#68" id="68">68</a>
+<a href="#69" id="69">69</a>
+<a href="#70" id="70">70</a>
+<a href="#71" id="71">71</a>
+<a href="#72" id="72">72</a>
+<a href="#73" id="73">73</a>
+<a href="#74" id="74">74</a>
+<a href="#75" id="75">75</a>
+<a href="#76" id="76">76</a>
+<a href="#77" id="77">77</a>
+<a href="#78" id="78">78</a>
+<a href="#79" id="79">79</a>
+<a href="#80" id="80">80</a>
+<a href="#81" id="81">81</a>
+<a href="#82" id="82">82</a>
+<a href="#83" id="83">83</a>
+<a href="#84" id="84">84</a>
+<a href="#85" id="85">85</a>
+<a href="#86" id="86">86</a>
+<a href="#87" id="87">87</a>
+<a href="#88" id="88">88</a>
+<a href="#89" id="89">89</a>
+<a href="#90" id="90">90</a>
+<a href="#91" id="91">91</a>
+<a href="#92" id="92">92</a>
+<a href="#93" id="93">93</a>
+<a href="#94" id="94">94</a>
+<a href="#95" id="95">95</a>
+<a href="#96" id="96">96</a>
+<a href="#97" id="97">97</a>
+<a href="#98" id="98">98</a>
+<a href="#99" id="99">99</a>
+<a href="#100" id="100">100</a>
+<a href="#101" id="101">101</a>
+<a href="#102" id="102">102</a>
+<a href="#103" id="103">103</a>
+<a href="#104" id="104">104</a>
+<a href="#105" id="105">105</a>
+<a href="#106" id="106">106</a>
+<a href="#107" id="107">107</a>
+<a href="#108" id="108">108</a>
+<a href="#109" id="109">109</a>
+<a href="#110" id="110">110</a>
+<a href="#111" id="111">111</a>
+<a href="#112" id="112">112</a>
+<a href="#113" id="113">113</a>
+<a href="#114" id="114">114</a>
+<a href="#115" id="115">115</a>
+<a href="#116" id="116">116</a>
+<a href="#117" id="117">117</a>
+<a href="#118" id="118">118</a>
+<a href="#119" id="119">119</a>
+<a href="#120" id="120">120</a>
+<a href="#121" id="121">121</a>
+<a href="#122" id="122">122</a>
+<a href="#123" id="123">123</a>
+<a href="#124" id="124">124</a>
+<a href="#125" id="125">125</a>
+<a href="#126" id="126">126</a>
+<a href="#127" id="127">127</a>
+<a href="#128" id="128">128</a>
+<a href="#129" id="129">129</a>
+<a href="#130" id="130">130</a>
+<a href="#131" id="131">131</a>
+<a href="#132" id="132">132</a>
+<a href="#133" id="133">133</a>
+<a href="#134" id="134">134</a>
+<a href="#135" id="135">135</a>
+<a href="#136" id="136">136</a>
+<a href="#137" id="137">137</a>
+<a href="#138" id="138">138</a>
+<a href="#139" id="139">139</a>
+<a href="#140" id="140">140</a>
+<a href="#141" id="141">141</a>
+<a href="#142" id="142">142</a>
+<a href="#143" id="143">143</a>
+<a href="#144" id="144">144</a>
+<a href="#145" id="145">145</a>
+<a href="#146" id="146">146</a>
+<a href="#147" id="147">147</a>
+<a href="#148" id="148">148</a>
+<a href="#149" id="149">149</a>
+<a href="#150" id="150">150</a>
+<a href="#151" id="151">151</a>
+<a href="#152" id="152">152</a>
+<a href="#153" id="153">153</a>
+<a href="#154" id="154">154</a>
+<a href="#155" id="155">155</a>
+<a href="#156" id="156">156</a>
+<a href="#157" id="157">157</a>
+<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>
+<a href="#167" id="167">167</a>
+<a href="#168" id="168">168</a>
+<a href="#169" id="169">169</a>
+<a href="#170" id="170">170</a>
+<a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
+<a href="#179" id="179">179</a>
+<a href="#180" id="180">180</a>
+<a href="#181" id="181">181</a>
+<a href="#182" id="182">182</a>
+<a href="#183" id="183">183</a>
+<a href="#184" id="184">184</a>
+<a href="#185" id="185">185</a>
+<a href="#186" id="186">186</a>
+<a href="#187" id="187">187</a>
+<a href="#188" id="188">188</a>
+<a href="#189" id="189">189</a>
+<a href="#190" id="190">190</a>
+<a href="#191" id="191">191</a>
+<a href="#192" id="192">192</a>
+<a href="#193" id="193">193</a>
+<a href="#194" id="194">194</a>
+<a href="#195" id="195">195</a>
+<a href="#196" id="196">196</a>
+<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>
+<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>
+<a href="#220" id="220">220</a>
+<a href="#221" id="221">221</a>
+<a href="#222" id="222">222</a>
+<a href="#223" id="223">223</a>
+<a href="#224" id="224">224</a>
+<a href="#225" id="225">225</a>
+<a href="#226" id="226">226</a>
+<a href="#227" id="227">227</a>
+<a href="#228" id="228">228</a>
+<a href="#229" id="229">229</a>
+<a href="#230" id="230">230</a>
+<a href="#231" id="231">231</a>
+<a href="#232" id="232">232</a>
+<a href="#233" id="233">233</a>
+<a href="#234" id="234">234</a>
+<a href="#235" id="235">235</a>
+<a href="#236" id="236">236</a>
+<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>
+<a href="#247" id="247">247</a>
+<a href="#248" id="248">248</a>
+<a href="#249" id="249">249</a>
+<a href="#250" id="250">250</a>
+<a href="#251" id="251">251</a>
+<a href="#252" id="252">252</a>
+<a href="#253" id="253">253</a>
+<a href="#254" id="254">254</a>
+<a href="#255" id="255">255</a>
+<a href="#256" id="256">256</a>
+<a href="#257" id="257">257</a>
+<a href="#258" id="258">258</a>
+<a href="#259" id="259">259</a>
+<a href="#260" id="260">260</a>
+<a href="#261" id="261">261</a>
+<a href="#262" id="262">262</a>
+<a href="#263" id="263">263</a>
+<a href="#264" id="264">264</a>
+<a href="#265" id="265">265</a>
+<a href="#266" id="266">266</a>
+<a href="#267" id="267">267</a>
+<a href="#268" id="268">268</a>
+<a href="#269" id="269">269</a>
+<a href="#270" id="270">270</a>
+<a href="#271" id="271">271</a>
+<a href="#272" id="272">272</a>
+<a href="#273" id="273">273</a>
+<a href="#274" id="274">274</a>
+<a href="#275" id="275">275</a>
+<a href="#276" id="276">276</a>
+<a href="#277" id="277">277</a>
+<a href="#278" id="278">278</a>
+<a href="#279" id="279">279</a>
+<a href="#280" id="280">280</a>
+<a href="#281" id="281">281</a>
+<a href="#282" id="282">282</a>
+<a href="#283" id="283">283</a>
+<a href="#284" id="284">284</a>
+<a href="#285" id="285">285</a>
+<a href="#286" id="286">286</a>
+<a href="#287" id="287">287</a>
+<a href="#288" id="288">288</a>
+<a href="#289" id="289">289</a>
+<a href="#290" id="290">290</a>
+<a href="#291" id="291">291</a>
+<a href="#292" id="292">292</a>
+<a href="#293" id="293">293</a>
+<a href="#294" id="294">294</a>
+<a href="#295" id="295">295</a>
+<a href="#296" id="296">296</a>
+<a href="#297" id="297">297</a>
+<a href="#298" id="298">298</a>
+<a href="#299" id="299">299</a>
+<a href="#300" id="300">300</a>
+<a href="#301" id="301">301</a>
+<a href="#302" id="302">302</a>
+<a href="#303" id="303">303</a>
+<a href="#304" id="304">304</a>
+<a href="#305" id="305">305</a>
+<a href="#306" id="306">306</a>
+<a href="#307" id="307">307</a>
+<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>
+<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>
+<a href="#337" id="337">337</a>
+<a href="#338" id="338">338</a>
+<a href="#339" id="339">339</a>
+<a href="#340" id="340">340</a>
+<a href="#341" id="341">341</a>
+<a href="#342" id="342">342</a>
+<a href="#343" id="343">343</a>
+<a href="#344" id="344">344</a>
+<a href="#345" id="345">345</a>
+<a href="#346" id="346">346</a>
+<a href="#347" id="347">347</a>
+<a href="#348" id="348">348</a>
+<a href="#349" id="349">349</a>
+<a href="#350" id="350">350</a>
+<a href="#351" id="351">351</a>
+<a href="#352" id="352">352</a>
+<a href="#353" id="353">353</a>
+<a href="#354" id="354">354</a>
+<a href="#355" id="355">355</a>
+<a href="#356" id="356">356</a>
+<a href="#357" id="357">357</a>
+<a href="#358" id="358">358</a>
+<a href="#359" id="359">359</a>
+<a href="#360" id="360">360</a>
+<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>
+<a href="#376" id="376">376</a>
+<a href="#377" id="377">377</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
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// &quot;License&quot;); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+</span><span class="kw">use </span>std::fmt::Debug;
+<span class="kw">use </span>std::io;
+<span class="kw">use </span>std::task::Context;
+<span class="kw">use </span>std::task::Poll;
+
+<span class="kw">use </span>async_trait::async_trait;
+<span class="kw">use </span>bytes::Bytes;
+<span class="kw">use </span>futures::FutureExt;
+<span class="kw">use </span>minitrace::prelude::<span class="kw-2">*</span>;
+
+<span class="kw">use </span><span class="kw">crate</span>::ops::<span 
class="kw-2">*</span>;
+<span class="kw">use </span><span 
class="kw">crate</span>::raw::oio::{PageOperation, ReadOperation, 
WriteOperation};
+<span class="kw">use </span><span class="kw">crate</span>::raw::<span 
class="kw-2">*</span>;
+<span class="kw">use crate</span>::<span class="kw-2">*</span>;
+
+<span class="doccomment">/// Add [minitrace](https://docs.rs/minitrace/) for 
every operations.
+///
+/// # Examples
+///
+/// ## Basic Setup
+///
+/// ```
+/// use anyhow::Result;
+/// use opendal::layers::MinitraceLayer;
+/// use opendal::services;
+/// use opendal::Operator;
+///
+/// let _ = Operator::new(services::Memory::default())
+///     .expect(&quot;must init&quot;)
+///     .layer(MinitraceLayer)
+///     .finish();
+/// ```
+///
+/// ## Real usage
+///
+/// ```no_run
+/// use std::error::Error;
+///
+/// use anyhow::Result;
+/// use futures::executor::block_on;
+/// use opendal::layers::MinitraceLayer;
+/// use opendal::services;
+/// use opendal::Operator;
+///
+/// fn main() -&gt; Result&lt;(), Box&lt;dyn Error + Send + Sync + 
&#39;static&gt;&gt; {
+///     let collector = {
+///         let (span, collector) = minitrace::Span::root(&quot;op&quot;);
+///         let _g = span.set_local_parent();
+///         let runtime = tokio::runtime::Runtime::new()?;
+///
+///         runtime.block_on(async {
+///             let _ = dotenvy::dotenv();
+///             let op = Operator::from_env::&lt;services::Memory&gt;()
+///                 .expect(&quot;init operator must succeed&quot;)
+///                 .layer(MinitraceLayer)
+///                 .finish();
+///
+///             op.write(&quot;test&quot;, &quot;0&quot;.repeat(16 * 1024 * 
1024).into_bytes())
+///                 .await
+///                 .expect(&quot;must succeed&quot;);
+///             op.stat(&quot;test&quot;).await.expect(&quot;must 
succeed&quot;);
+///             op.read(&quot;test&quot;).await.expect(&quot;must 
succeed&quot;);
+///         });
+///         collector
+///     };
+///
+///     let spans = block_on(collector.collect());
+///
+///     let bytes =
+///         minitrace_jaeger::encode(&quot;opendal&quot;.to_owned(), 
rand::random(), 0, 0, &amp;spans).unwrap();
+///     
minitrace_jaeger::report_blocking(&quot;127.0.0.1:6831&quot;.parse().unwrap(), 
&amp;bytes)
+///         .expect(&quot;report error&quot;);
+///
+///     Ok(())
+/// }
+/// ```
+///
+/// # Output
+///
+/// OpenDAL is using 
[`minitrace`](https://docs.rs/minitrace/latest/minitrace/) for tracing 
internally.
+///
+/// To enable minitrace output, please init one of the reporter that 
`minitrace` supports.
+///
+/// For example:
+///
+/// ```ignore
+/// extern crate minitrace_jaeger;
+///
+/// let spans = block_on(collector.collect());
+///
+/// let bytes =
+///     minitrace_jaeger::encode(&quot;opendal&quot;.to_owned(), 
rand::random(), 0, 0, &amp;spans).unwrap();
+/// 
minitrace_jaeger::report_blocking(&quot;127.0.0.1:6831&quot;.parse().unwrap(), 
&amp;bytes).expect(&quot;report error&quot;);
+/// ```
+///
+/// For real-world usage, please take a look at 
[`minitrace-datadog`](https://crates.io/crates/minitrace-datadog) or 
[`minitrace-jaeger`](https://crates.io/crates/minitrace-jaeger) .
+</span><span class="kw">pub struct </span>MinitraceLayer;
+
+<span class="kw">impl</span>&lt;A: Accessor&gt; Layer&lt;A&gt; <span 
class="kw">for </span>MinitraceLayer {
+    <span class="kw">type </span>LayeredAccessor = MinitraceAccessor&lt;A&gt;;
+
+    <span class="kw">fn </span>layer(<span class="kw-2">&amp;</span><span 
class="self">self</span>, inner: A) -&gt; <span 
class="self">Self</span>::LayeredAccessor {
+        MinitraceAccessor { inner }
+    }
+}
+
+<span class="attr">#[derive(Debug)]
+</span><span class="kw">pub struct </span>MinitraceAccessor&lt;A&gt; {
+    inner: A,
+}
+
+<span class="attr">#[async_trait]
+</span><span class="kw">impl</span>&lt;A: Accessor&gt; LayeredAccessor <span 
class="kw">for </span>MinitraceAccessor&lt;A&gt; {
+    <span class="kw">type </span>Inner = A;
+    <span class="kw">type </span>Reader = MinitraceWrapper&lt;A::Reader&gt;;
+    <span class="kw">type </span>BlockingReader = 
MinitraceWrapper&lt;A::BlockingReader&gt;;
+    <span class="kw">type </span>Writer = MinitraceWrapper&lt;A::Writer&gt;;
+    <span class="kw">type </span>BlockingWriter = 
MinitraceWrapper&lt;A::BlockingWriter&gt;;
+    <span class="kw">type </span>Pager = MinitraceWrapper&lt;A::Pager&gt;;
+    <span class="kw">type </span>BlockingPager = 
MinitraceWrapper&lt;A::BlockingPager&gt;;
+
+    <span class="kw">fn </span>inner(<span class="kw-2">&amp;</span><span 
class="self">self</span>) -&gt; <span class="kw-2">&amp;</span><span 
class="self">Self</span>::Inner {
+        <span class="kw-2">&amp;</span><span class="self">self</span>.inner
+    }
+
+    <span class="attr">#[trace(<span 
class="string">&quot;metadata&quot;</span>)]
+    </span><span class="kw">fn </span>metadata(<span 
class="kw-2">&amp;</span><span class="self">self</span>) -&gt; AccessorInfo {
+        <span class="self">self</span>.inner.info()
+    }
+
+    <span class="attr">#[trace(<span class="string">&quot;create&quot;</span>, 
enter_on_poll = <span class="bool-val">true</span>)]
+    </span><span class="kw">async fn </span>create(<span 
class="kw-2">&amp;</span><span class="self">self</span>, path: <span 
class="kw-2">&amp;</span>str, args: OpCreate) -&gt; <span 
class="prelude-ty">Result</span>&lt;RpCreate&gt; {
+        <span class="self">self</span>.inner.create(path, args).<span 
class="kw">await
+    </span>}
+
+    <span class="kw">async fn </span>read(<span class="kw-2">&amp;</span><span 
class="self">self</span>, path: <span class="kw-2">&amp;</span>str, args: 
OpRead) -&gt; <span class="prelude-ty">Result</span>&lt;(RpRead, <span 
class="self">Self</span>::Reader)&gt; {
+        <span class="kw">let </span>span = Span::enter_with_local_parent(<span 
class="string">&quot;read&quot;</span>);
+        <span class="self">self</span>.inner
+            .read(path, args)
+            .map(|v| v.map(|(rp, r)| (rp, MinitraceWrapper::new(span, r))))
+            .<span class="kw">await
+    </span>}
+
+    <span class="kw">async fn </span>write(<span 
class="kw-2">&amp;</span><span class="self">self</span>, path: <span 
class="kw-2">&amp;</span>str, args: OpWrite) -&gt; <span 
class="prelude-ty">Result</span>&lt;(RpWrite, <span 
class="self">Self</span>::Writer)&gt; {
+        <span class="kw">let </span>span = Span::enter_with_local_parent(<span 
class="string">&quot;write&quot;</span>);
+        <span class="self">self</span>.inner
+            .write(path, args)
+            .map(|v| v.map(|(rp, r)| (rp, MinitraceWrapper::new(span, r))))
+            .<span class="kw">await
+    </span>}
+
+    <span class="attr">#[trace(<span class="string">&quot;stat&quot;</span>, 
enter_on_poll = <span class="bool-val">true</span>)]
+    </span><span class="kw">async fn </span>stat(<span 
class="kw-2">&amp;</span><span class="self">self</span>, path: <span 
class="kw-2">&amp;</span>str, args: OpStat) -&gt; <span 
class="prelude-ty">Result</span>&lt;RpStat&gt; {
+        <span class="self">self</span>.inner.stat(path, args).<span 
class="kw">await
+    </span>}
+
+    <span class="attr">#[trace(<span class="string">&quot;delete&quot;</span>, 
enter_on_poll = <span class="bool-val">true</span>)]
+    </span><span class="kw">async fn </span>delete(<span 
class="kw-2">&amp;</span><span class="self">self</span>, path: <span 
class="kw-2">&amp;</span>str, args: OpDelete) -&gt; <span 
class="prelude-ty">Result</span>&lt;RpDelete&gt; {
+        <span class="self">self</span>.inner.delete(path, args).<span 
class="kw">await
+    </span>}
+
+    <span class="kw">async fn </span>list(<span class="kw-2">&amp;</span><span 
class="self">self</span>, path: <span class="kw-2">&amp;</span>str, args: 
OpList) -&gt; <span class="prelude-ty">Result</span>&lt;(RpList, <span 
class="self">Self</span>::Pager)&gt; {
+        <span class="kw">let </span>span = Span::enter_with_local_parent(<span 
class="string">&quot;list&quot;</span>);
+        <span class="self">self</span>.inner
+            .list(path, args)
+            .map(|v| v.map(|(rp, s)| (rp, MinitraceWrapper::new(span, s))))
+            .<span class="kw">await
+    </span>}
+
+    <span class="kw">async fn </span>scan(<span class="kw-2">&amp;</span><span 
class="self">self</span>, path: <span class="kw-2">&amp;</span>str, args: 
OpScan) -&gt; <span class="prelude-ty">Result</span>&lt;(RpScan, <span 
class="self">Self</span>::Pager)&gt; {
+        <span class="kw">let </span>span = Span::enter_with_local_parent(<span 
class="string">&quot;scan&quot;</span>);
+        <span class="self">self</span>.inner
+            .scan(path, args)
+            .map(|v| v.map(|(rp, s)| (rp, MinitraceWrapper::new(span, s))))
+            .<span class="kw">await
+    </span>}
+
+    <span class="attr">#[trace(<span 
class="string">&quot;presign&quot;</span>, enter_on_poll = <span 
class="bool-val">true</span>)]
+    </span><span class="kw">async fn </span>presign(<span 
class="kw-2">&amp;</span><span class="self">self</span>, path: <span 
class="kw-2">&amp;</span>str, args: OpPresign) -&gt; <span 
class="prelude-ty">Result</span>&lt;RpPresign&gt; {
+        <span class="self">self</span>.inner.presign(path, args).<span 
class="kw">await
+    </span>}
+
+    <span class="attr">#[trace(<span class="string">&quot;batch&quot;</span>, 
enter_on_poll = <span class="bool-val">true</span>)]
+    </span><span class="kw">async fn </span>batch(<span 
class="kw-2">&amp;</span><span class="self">self</span>, args: OpBatch) -&gt; 
<span class="prelude-ty">Result</span>&lt;RpBatch&gt; {
+        <span class="self">self</span>.inner.batch(args).<span class="kw">await
+    </span>}
+
+    <span class="attr">#[trace(<span 
class="string">&quot;blocking_create&quot;</span>)]
+    </span><span class="kw">fn </span>blocking_create(<span 
class="kw-2">&amp;</span><span class="self">self</span>, path: <span 
class="kw-2">&amp;</span>str, args: OpCreate) -&gt; <span 
class="prelude-ty">Result</span>&lt;RpCreate&gt; {
+        <span class="self">self</span>.inner.blocking_create(path, args)
+    }
+
+    <span class="kw">fn </span>blocking_read(<span 
class="kw-2">&amp;</span><span class="self">self</span>, path: <span 
class="kw-2">&amp;</span>str, args: OpRead) -&gt; <span 
class="prelude-ty">Result</span>&lt;(RpRead, <span 
class="self">Self</span>::BlockingReader)&gt; {
+        <span class="kw">let </span>span = Span::enter_with_local_parent(<span 
class="string">&quot;blocking_read&quot;</span>);
+        <span class="self">self</span>.inner.blocking_read(path, 
args).map(|(rp, r)| {
+            (
+                rp,
+                MinitraceWrapper::new(Span::enter_with_parent(<span 
class="string">&quot;ReadOperation&quot;</span>, <span 
class="kw-2">&amp;</span>span), r),
+            )
+        })
+    }
+
+    <span class="kw">fn </span>blocking_write(<span 
class="kw-2">&amp;</span><span class="self">self</span>, path: <span 
class="kw-2">&amp;</span>str, args: OpWrite) -&gt; <span 
class="prelude-ty">Result</span>&lt;(RpWrite, <span 
class="self">Self</span>::BlockingWriter)&gt; {
+        <span class="kw">let </span>span = Span::enter_with_local_parent(<span 
class="string">&quot;blocking_write&quot;</span>);
+        <span class="self">self</span>.inner.blocking_write(path, 
args).map(|(rp, r)| {
+            (
+                rp,
+                MinitraceWrapper::new(Span::enter_with_parent(<span 
class="string">&quot;WriteOperation&quot;</span>, <span 
class="kw-2">&amp;</span>span), r),
+            )
+        })
+    }
+
+    <span class="attr">#[trace(<span 
class="string">&quot;blocking_stat&quot;</span>)]
+    </span><span class="kw">fn </span>blocking_stat(<span 
class="kw-2">&amp;</span><span class="self">self</span>, path: <span 
class="kw-2">&amp;</span>str, args: OpStat) -&gt; <span 
class="prelude-ty">Result</span>&lt;RpStat&gt; {
+        <span class="self">self</span>.inner.blocking_stat(path, args)
+    }
+
+    <span class="attr">#[trace(<span 
class="string">&quot;blocking_delete&quot;</span>)]
+    </span><span class="kw">fn </span>blocking_delete(<span 
class="kw-2">&amp;</span><span class="self">self</span>, path: <span 
class="kw-2">&amp;</span>str, args: OpDelete) -&gt; <span 
class="prelude-ty">Result</span>&lt;RpDelete&gt; {
+        <span class="self">self</span>.inner.blocking_delete(path, args)
+    }
+
+    <span class="kw">fn </span>blocking_list(<span 
class="kw-2">&amp;</span><span class="self">self</span>, path: <span 
class="kw-2">&amp;</span>str, args: OpList) -&gt; <span 
class="prelude-ty">Result</span>&lt;(RpList, <span 
class="self">Self</span>::BlockingPager)&gt; {
+        <span class="kw">let </span>span = Span::enter_with_local_parent(<span 
class="string">&quot;blocking_list&quot;</span>);
+        <span class="self">self</span>.inner.blocking_list(path, 
args).map(|(rp, it)| {
+            (
+                rp,
+                MinitraceWrapper::new(Span::enter_with_parent(<span 
class="string">&quot;PageOperation&quot;</span>, <span 
class="kw-2">&amp;</span>span), it),
+            )
+        })
+    }
+
+    <span class="kw">fn </span>blocking_scan(<span 
class="kw-2">&amp;</span><span class="self">self</span>, path: <span 
class="kw-2">&amp;</span>str, args: OpScan) -&gt; <span 
class="prelude-ty">Result</span>&lt;(RpScan, <span 
class="self">Self</span>::BlockingPager)&gt; {
+        <span class="kw">let </span>span = Span::enter_with_local_parent(<span 
class="string">&quot;blocking_scan&quot;</span>);
+        <span class="self">self</span>.inner.blocking_scan(path, 
args).map(|(rp, it)| {
+            (
+                rp,
+                MinitraceWrapper::new(Span::enter_with_parent(<span 
class="string">&quot;PageOperation&quot;</span>, <span 
class="kw-2">&amp;</span>span), it),
+            )
+        })
+    }
+}
+
+<span class="kw">pub struct </span>MinitraceWrapper&lt;R&gt; {
+    span: Span,
+    inner: R,
+}
+
+<span class="kw">impl</span>&lt;R&gt; MinitraceWrapper&lt;R&gt; {
+    <span class="kw">fn </span>new(span: Span, inner: R) -&gt; <span 
class="self">Self </span>{
+        <span class="self">Self </span>{ span, inner }
+    }
+}
+
+<span class="kw">impl</span>&lt;R: oio::Read&gt; oio::Read <span 
class="kw">for </span>MinitraceWrapper&lt;R&gt; {
+    <span class="kw">fn </span>poll_read(<span class="kw-2">&amp;mut 
</span><span class="self">self</span>, cx: <span class="kw-2">&amp;mut 
</span>Context&lt;<span class="lifetime">&#39;_</span>&gt;, buf: <span 
class="kw-2">&amp;mut </span>[u8]) -&gt; Poll&lt;<span 
class="prelude-ty">Result</span>&lt;usize&gt;&gt; {
+        <span class="kw">let </span>_span = 
Span::enter_with_parent(ReadOperation::Read.into_static(), <span 
class="kw-2">&amp;</span><span class="self">self</span>.span);
+        <span class="self">self</span>.inner.poll_read(cx, buf)
+    }
+
+    <span class="kw">fn </span>poll_seek(<span class="kw-2">&amp;mut 
</span><span class="self">self</span>, cx: <span class="kw-2">&amp;mut 
</span>Context&lt;<span class="lifetime">&#39;_</span>&gt;, pos: io::SeekFrom) 
-&gt; Poll&lt;<span class="prelude-ty">Result</span>&lt;u64&gt;&gt; {
+        <span class="kw">let </span>_span = 
Span::enter_with_parent(ReadOperation::Seek.into_static(), <span 
class="kw-2">&amp;</span><span class="self">self</span>.span);
+        <span class="self">self</span>.inner.poll_seek(cx, pos)
+    }
+
+    <span class="kw">fn </span>poll_next(<span class="kw-2">&amp;mut 
</span><span class="self">self</span>, cx: <span class="kw-2">&amp;mut 
</span>Context&lt;<span class="lifetime">&#39;_</span>&gt;) -&gt; Poll&lt;<span 
class="prelude-ty">Option</span>&lt;<span 
class="prelude-ty">Result</span>&lt;Bytes&gt;&gt;&gt; {
+        <span class="kw">let </span>_span = 
Span::enter_with_parent(ReadOperation::Next.into_static(), <span 
class="kw-2">&amp;</span><span class="self">self</span>.span);
+        <span class="self">self</span>.inner.poll_next(cx)
+    }
+}
+
+<span class="kw">impl</span>&lt;R: oio::BlockingRead&gt; oio::BlockingRead 
<span class="kw">for </span>MinitraceWrapper&lt;R&gt; {
+    <span class="kw">fn </span>read(<span class="kw-2">&amp;mut </span><span 
class="self">self</span>, buf: <span class="kw-2">&amp;mut </span>[u8]) -&gt; 
<span class="prelude-ty">Result</span>&lt;usize&gt; {
+        <span class="kw">let </span>_span = 
Span::enter_with_parent(ReadOperation::BlockingRead.into_static(), <span 
class="kw-2">&amp;</span><span class="self">self</span>.span);
+        <span class="self">self</span>.inner.read(buf)
+    }
+
+    <span class="kw">fn </span>seek(<span class="kw-2">&amp;mut </span><span 
class="self">self</span>, pos: io::SeekFrom) -&gt; <span 
class="prelude-ty">Result</span>&lt;u64&gt; {
+        <span class="kw">let </span>_span = 
Span::enter_with_parent(ReadOperation::BlockingSeek.into_static(), <span 
class="kw-2">&amp;</span><span class="self">self</span>.span);
+        <span class="self">self</span>.inner.seek(pos)
+    }
+
+    <span class="kw">fn </span>next(<span class="kw-2">&amp;mut </span><span 
class="self">self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;<span 
class="prelude-ty">Result</span>&lt;Bytes&gt;&gt; {
+        <span class="kw">let </span>_span = 
Span::enter_with_parent(ReadOperation::BlockingNext.into_static(), <span 
class="kw-2">&amp;</span><span class="self">self</span>.span);
+        <span class="self">self</span>.inner.next()
+    }
+}
+
+<span class="attr">#[async_trait]
+</span><span class="kw">impl</span>&lt;R: oio::Write&gt; oio::Write <span 
class="kw">for </span>MinitraceWrapper&lt;R&gt; {
+    <span class="kw">async fn </span>write(<span class="kw-2">&amp;mut 
</span><span class="self">self</span>, bs: Bytes) -&gt; <span 
class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="self">self</span>.inner
+            .write(bs)
+            .in_span(Span::enter_with_parent(
+                WriteOperation::Write.into_static(),
+                <span class="kw-2">&amp;</span><span 
class="self">self</span>.span,
+            ))
+            .<span class="kw">await
+    </span>}
+
+    <span class="kw">async fn </span>append(<span class="kw-2">&amp;mut 
</span><span class="self">self</span>, bs: Bytes) -&gt; <span 
class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="self">self</span>.inner
+            .append(bs)
+            .in_span(Span::enter_with_parent(
+                WriteOperation::Append.into_static(),
+                <span class="kw-2">&amp;</span><span 
class="self">self</span>.span,
+            ))
+            .<span class="kw">await
+    </span>}
+
+    <span class="kw">async fn </span>close(<span class="kw-2">&amp;mut 
</span><span class="self">self</span>) -&gt; <span 
class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="self">self</span>.inner
+            .close()
+            .in_span(Span::enter_with_parent(
+                WriteOperation::Close.into_static(),
+                <span class="kw-2">&amp;</span><span 
class="self">self</span>.span,
+            ))
+            .<span class="kw">await
+    </span>}
+}
+
+<span class="kw">impl</span>&lt;R: oio::BlockingWrite&gt; oio::BlockingWrite 
<span class="kw">for </span>MinitraceWrapper&lt;R&gt; {
+    <span class="kw">fn </span>write(<span class="kw-2">&amp;mut </span><span 
class="self">self</span>, bs: Bytes) -&gt; <span 
class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span>_span =
+            
Span::enter_with_parent(WriteOperation::BlockingWrite.into_static(), <span 
class="kw-2">&amp;</span><span class="self">self</span>.span);
+        <span class="self">self</span>.inner.write(bs)
+    }
+
+    <span class="kw">fn </span>append(<span class="kw-2">&amp;mut </span><span 
class="self">self</span>, bs: Bytes) -&gt; <span 
class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span>_span =
+            
Span::enter_with_parent(WriteOperation::BlockingAppend.into_static(), <span 
class="kw-2">&amp;</span><span class="self">self</span>.span);
+        <span class="self">self</span>.inner.append(bs)
+    }
+
+    <span class="kw">fn </span>close(<span class="kw-2">&amp;mut </span><span 
class="self">self</span>) -&gt; <span 
class="prelude-ty">Result</span>&lt;()&gt; {
+        <span class="kw">let </span>_span =
+            
Span::enter_with_parent(WriteOperation::BlockingClose.into_static(), <span 
class="kw-2">&amp;</span><span class="self">self</span>.span);
+        <span class="self">self</span>.inner.close()
+    }
+}
+
+<span class="attr">#[async_trait]
+</span><span class="kw">impl</span>&lt;R: oio::Page&gt; oio::Page <span 
class="kw">for </span>MinitraceWrapper&lt;R&gt; {
+    <span class="kw">async fn </span>next(<span class="kw-2">&amp;mut 
</span><span class="self">self</span>) -&gt; <span 
class="prelude-ty">Result</span>&lt;<span 
class="prelude-ty">Option</span>&lt;Vec&lt;oio::Entry&gt;&gt;&gt; {
+        <span class="self">self</span>.inner
+            .next()
+            .in_span(Span::enter_with_parent(
+                PageOperation::Next.into_static(),
+                <span class="kw-2">&amp;</span><span 
class="self">self</span>.span,
+            ))
+            .<span class="kw">await
+    </span>}
+}
+
+<span class="kw">impl</span>&lt;R: oio::BlockingPage&gt; oio::BlockingPage 
<span class="kw">for </span>MinitraceWrapper&lt;R&gt; {
+    <span class="kw">fn </span>next(<span class="kw-2">&amp;mut </span><span 
class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;<span 
class="prelude-ty">Option</span>&lt;Vec&lt;oio::Entry&gt;&gt;&gt; {
+        <span class="kw">let </span>_span = 
Span::enter_with_parent(PageOperation::BlockingNext.into_static(), <span 
class="kw-2">&amp;</span><span class="self">self</span>.span);
+        <span class="self">self</span>.inner.next()
+    }
+}
+</code></pre></div>
+</section></main><div id="rustdoc-vars" data-root-path="../../../" 
data-static-root-path="../../../static.files/" data-current-crate="opendal" 
data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.2 (9eb3afe9e 
2023-03-27)" data-search-js="search-98d53477a794af0b.js" 
data-settings-js="settings-c3c521c753752a1a.js" 
data-settings-css="settings-08ddfdda51b8ee2e.css" ></div></body></html>
\ No newline at end of file
diff --git a/docs/rust/src/opendal/layers/mod.rs.html 
b/docs/rust/src/opendal/layers/mod.rs.html
index 7b683767..ada1e44a 100644
--- a/docs/rust/src/opendal/layers/mod.rs.html
+++ b/docs/rust/src/opendal/layers/mod.rs.html
@@ -52,6 +52,11 @@
 <a href="#52" id="52">52</a>
 <a href="#53" id="53">53</a>
 <a href="#54" id="54">54</a>
+<a href="#55" id="55">55</a>
+<a href="#56" id="56">56</a>
+<a href="#57" id="57">57</a>
+<a href="#58" id="58">58</a>
+<a href="#59" id="59">59</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
@@ -98,6 +103,11 @@
 <span class="attr">#[cfg(feature = <span 
class="string">&quot;layers-tracing&quot;</span>)]
 </span><span class="kw">pub use </span><span 
class="self">self</span>::tracing::TracingLayer;
 
+<span class="attr">#[cfg(feature = <span 
class="string">&quot;layers-minitrace&quot;</span>)]
+</span><span class="kw">mod </span>minitrace;
+<span class="attr">#[cfg(feature = <span 
class="string">&quot;layers-minitrace&quot;</span>)]
+</span><span class="kw">pub use </span><span 
class="self">self</span>::minitrace::MinitraceLayer;
+
 <span class="kw">mod </span>type_eraser;
 <span class="kw">pub</span>(<span class="kw">crate</span>) <span 
class="kw">use </span>type_eraser::TypeEraseLayer;
 
diff --git a/index.html b/index.html
index d735c09d..5985185c 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.ab020f68.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.93236ea5.js" as="script">
 <link rel="preload" href="/assets/js/main.fe9ff58f.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.ab020f68.js"></script>
+<script src="/assets/js/runtime~main.93236ea5.js"></script>
 <script src="/assets/js/main.fe9ff58f.js"></script>
 </body>
 </html>
\ No newline at end of file

Reply via email to