Files
greptimedb/object_store/trait.Access.html
2025-12-23 10:07:07 +00:00

247 lines
53 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Underlying trait of all backends for implementers."><title>Access in object_store - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../static.files/rustdoc-e56847b5.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="object_store" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (fa3155a64 2025-09-30)" data-channel="nightly" data-search-js="search-e256b49e.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-044be391.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><rustdoc-topbar><h2><a href="#">Access</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../object_store/index.html">object_<wbr>store</a><span class="version">1.0.0-beta.3</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Access</a></h2><h3><a href="#">Sections</a></h3><ul class="block top-toc"><li><a href="#note" title="Note">Note</a></li><li><a href="#operations" title="Operations">Operations</a></li></ul><h3><a href="#required-associated-types">Required Associated Types</a></h3><ul class="block"><li><a href="#associatedtype.Deleter" title="Deleter">Deleter</a></li><li><a href="#associatedtype.Lister" title="Lister">Lister</a></li><li><a href="#associatedtype.Reader" title="Reader">Reader</a></li><li><a href="#associatedtype.Writer" title="Writer">Writer</a></li></ul><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.info" title="info">info</a></li></ul><h3><a href="#provided-methods">Provided Methods</a></h3><ul class="block"><li><a href="#method.copy" title="copy">copy</a></li><li><a href="#method.create_dir" title="create_dir">create_dir</a></li><li><a href="#method.delete" title="delete">delete</a></li><li><a href="#method.list" title="list">list</a></li><li><a href="#method.presign" title="presign">presign</a></li><li><a href="#method.read" title="read">read</a></li><li><a href="#method.rename" title="rename">rename</a></li><li><a href="#method.stat" title="stat">stat</a></li><li><a href="#method.write" title="write">write</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-Access-for-()" title="()">()</a></li><li><a href="#impl-Access-for-Arc%3CT%3E" title="Arc&#60;T&#62;">Arc&#60;T&#62;</a></li></ul><h3><a href="#dyn-compatibility">Dyn Compatibility</a></h3><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="index.html">In crate object_<wbr>store</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="index.html">object_store</a></div><h1>Trait <span class="trait">Access</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"></span></div><pre class="rust item-decl"><code>pub trait Access:
<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>
+ <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>
+ <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a>
+ <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>
+ 'static {
type <a href="#associatedtype.Reader" class="associatedtype">Reader</a>: <a class="trait" href="layers/mock/trait.Read.html" title="trait object_store::layers::mock::Read">Read</a>;
type <a href="#associatedtype.Writer" class="associatedtype">Writer</a>: <a class="trait" href="layers/mock/trait.Write.html" title="trait object_store::layers::mock::Write">Write</a>;
type <a href="#associatedtype.Lister" class="associatedtype">Lister</a>: <a class="trait" href="layers/mock/trait.List.html" title="trait object_store::layers::mock::List">List</a>;
type <a href="#associatedtype.Deleter" class="associatedtype">Deleter</a>: <a class="trait" href="layers/mock/trait.Delete.html" title="trait object_store::layers::mock::Delete">Delete</a>;
// Required method
fn <a href="#tymethod.info" class="fn">info</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;AccessorInfo&gt;;
// Provided methods
fn <a href="#method.create_dir" class="fn">create_dir</a>(
&amp;self,
path: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
args: OpCreateDir,
) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;RpCreateDir, <a class="struct" href="struct.Error.html" title="struct object_store::Error">Error</a>&gt;&gt; + MaybeSend { ... }
<span class="item-spacer"></span> fn <a href="#method.stat" class="fn">stat</a>(
&amp;self,
path: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
args: OpStat,
) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;RpStat, <a class="struct" href="struct.Error.html" title="struct object_store::Error">Error</a>&gt;&gt; + MaybeSend { ... }
<span class="item-spacer"></span> fn <a href="#method.read" class="fn">read</a>(
&amp;self,
path: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
args: <a class="struct" href="layers/mock/struct.OpRead.html" title="struct object_store::layers::mock::OpRead">OpRead</a>,
) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;(<a class="struct" href="layers/mock/struct.RpRead.html" title="struct object_store::layers::mock::RpRead">RpRead</a>, Self::<a class="associatedtype" href="trait.Access.html#associatedtype.Reader" title="type object_store::Access::Reader">Reader</a>), <a class="struct" href="struct.Error.html" title="struct object_store::Error">Error</a>&gt;&gt; + MaybeSend { ... }
<span class="item-spacer"></span> fn <a href="#method.write" class="fn">write</a>(
&amp;self,
path: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
args: <a class="struct" href="layers/mock/struct.OpWrite.html" title="struct object_store::layers::mock::OpWrite">OpWrite</a>,
) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;(<a class="struct" href="layers/mock/struct.RpWrite.html" title="struct object_store::layers::mock::RpWrite">RpWrite</a>, Self::<a class="associatedtype" href="trait.Access.html#associatedtype.Writer" title="type object_store::Access::Writer">Writer</a>), <a class="struct" href="struct.Error.html" title="struct object_store::Error">Error</a>&gt;&gt; + MaybeSend { ... }
<span class="item-spacer"></span> fn <a href="#method.delete" class="fn">delete</a>(
&amp;self,
) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;(<a class="struct" href="layers/mock/struct.RpDelete.html" title="struct object_store::layers::mock::RpDelete">RpDelete</a>, Self::<a class="associatedtype" href="trait.Access.html#associatedtype.Deleter" title="type object_store::Access::Deleter">Deleter</a>), <a class="struct" href="struct.Error.html" title="struct object_store::Error">Error</a>&gt;&gt; + MaybeSend { ... }
<span class="item-spacer"></span> fn <a href="#method.list" class="fn">list</a>(
&amp;self,
path: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
args: <a class="struct" href="layers/mock/struct.OpList.html" title="struct object_store::layers::mock::OpList">OpList</a>,
) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;(<a class="struct" href="layers/mock/struct.RpList.html" title="struct object_store::layers::mock::RpList">RpList</a>, Self::<a class="associatedtype" href="trait.Access.html#associatedtype.Lister" title="type object_store::Access::Lister">Lister</a>), <a class="struct" href="struct.Error.html" title="struct object_store::Error">Error</a>&gt;&gt; + MaybeSend { ... }
<span class="item-spacer"></span> fn <a href="#method.copy" class="fn">copy</a>(
&amp;self,
from: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
to: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
args: OpCopy,
) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;RpCopy, <a class="struct" href="struct.Error.html" title="struct object_store::Error">Error</a>&gt;&gt; + MaybeSend { ... }
<span class="item-spacer"></span> fn <a href="#method.rename" class="fn">rename</a>(
&amp;self,
from: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
to: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
args: OpRename,
) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;RpRename, <a class="struct" href="struct.Error.html" title="struct object_store::Error">Error</a>&gt;&gt; + MaybeSend { ... }
<span class="item-spacer"></span> fn <a href="#method.presign" class="fn">presign</a>(
&amp;self,
path: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
args: OpPresign,
) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;RpPresign, <a class="struct" href="struct.Error.html" title="struct object_store::Error">Error</a>&gt;&gt; + MaybeSend { ... }
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Underlying trait of all backends for implementers.</p>
<p>The actual data access of storage service happens in Accessor layer.
Every storage supported by OpenDAL must implement <a href="trait.Access.html" title="trait object_store::Access"><code>Access</code></a> but not all
methods of <a href="trait.Access.html" title="trait object_store::Access"><code>Access</code></a> will be implemented according to how the storage service is.</p>
<p>For example, user can not modify the content from one HTTP file server directly.
So <a href="services/struct.Http.html" title="struct object_store::services::Http"><code>Http</code></a> implements and provides only read related actions.</p>
<p><a href="trait.Access.html" title="trait object_store::Access"><code>Access</code></a> gives default implementation for all methods which will raise <a href="enum.ErrorKind.html#variant.Unsupported" title="variant object_store::ErrorKind::Unsupported"><code>ErrorKind::Unsupported</code></a> error.
And what action this <a href="trait.Access.html" title="trait object_store::Access"><code>Access</code></a> supports will be pointed out in [<code>AccessorInfo</code>].</p>
<h2 id="note"><a class="doc-anchor" href="#note">§</a>Note</h2>
<p>Visit [<code>internals</code>][crate::docs::internals] for more tutorials.</p>
<h2 id="operations"><a class="doc-anchor" href="#operations">§</a>Operations</h2>
<ul>
<li>Path in args will all be normalized into the same style, services
should handle them based on services requirement.
<ul>
<li>Path that ends with <code>/</code> means its Dir, otherwise, its File.</li>
<li>Root dir is <code>/</code></li>
<li>Path will never be empty.</li>
</ul>
</li>
<li>Operations without capability requirement like <code>metadata</code>, <code>create</code> are
basic operations.
<ul>
<li>All services must implement them.</li>
<li>Use <code>unimplemented!()</code> if not implemented or cant implement.</li>
</ul>
</li>
<li>Operations with capability requirement like <code>presign</code> are optional operations.
<ul>
<li>Services can implement them based on services capabilities.</li>
<li>The default implementation should return <a href="enum.ErrorKind.html#variant.Unsupported" title="variant object_store::ErrorKind::Unsupported"><code>ErrorKind::Unsupported</code></a>.</li>
</ul>
</li>
</ul>
</div></details><h2 id="required-associated-types" class="section-header">Required Associated Types<a href="#required-associated-types" class="anchor">§</a></h2><div class="methods"><details class="toggle" open><summary><section id="associatedtype.Reader" class="method"><h4 class="code-header">type <a href="#associatedtype.Reader" class="associatedtype">Reader</a>: <a class="trait" href="layers/mock/trait.Read.html" title="trait object_store::layers::mock::Read">Read</a></h4></section></summary><div class="docblock"><p>Reader is the associated reader returned in <code>read</code> operation.</p>
</div></details><details class="toggle" open><summary><section id="associatedtype.Writer" class="method"><h4 class="code-header">type <a href="#associatedtype.Writer" class="associatedtype">Writer</a>: <a class="trait" href="layers/mock/trait.Write.html" title="trait object_store::layers::mock::Write">Write</a></h4></section></summary><div class="docblock"><p>Writer is the associated writer returned in <code>write</code> operation.</p>
</div></details><details class="toggle" open><summary><section id="associatedtype.Lister" class="method"><h4 class="code-header">type <a href="#associatedtype.Lister" class="associatedtype">Lister</a>: <a class="trait" href="layers/mock/trait.List.html" title="trait object_store::layers::mock::List">List</a></h4></section></summary><div class="docblock"><p>Lister is the associated lister returned in <code>list</code> operation.</p>
</div></details><details class="toggle" open><summary><section id="associatedtype.Deleter" class="method"><h4 class="code-header">type <a href="#associatedtype.Deleter" class="associatedtype">Deleter</a>: <a class="trait" href="layers/mock/trait.Delete.html" title="trait object_store::layers::mock::Delete">Delete</a></h4></section></summary><div class="docblock"><p>Deleter is the associated deleter returned in <code>delete</code> operation.</p>
</div></details></div><h2 id="required-methods" class="section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="tymethod.info" class="method"><h4 class="code-header">fn <a href="#tymethod.info" class="fn">info</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;AccessorInfo&gt;</h4></section></summary><div class="docblock"><p>Invoke the <code>info</code> operation to get metadata of accessor.</p>
<h5 id="notes"><a class="doc-anchor" href="#notes">§</a>Notes</h5>
<p>This function is required to be implemented.</p>
<p>By returning AccessorInfo, underlying services can declare
some useful information about itself.</p>
<ul>
<li>scheme: declare the scheme of backend.</li>
<li>capabilities: declare the capabilities of current backend.</li>
</ul>
</div></details></div><h2 id="provided-methods" class="section-header">Provided Methods<a href="#provided-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="method.create_dir" class="method"><h4 class="code-header">fn <a href="#method.create_dir" class="fn">create_dir</a>(
&amp;self,
path: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
args: OpCreateDir,
) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;RpCreateDir, <a class="struct" href="struct.Error.html" title="struct object_store::Error">Error</a>&gt;&gt; + MaybeSend</h4></section></summary><div class="docblock"><p>Invoke the <code>create</code> operation on the specified path</p>
<p>Require [<code>Capability::create_dir</code>]</p>
<h5 id="behavior"><a class="doc-anchor" href="#behavior">§</a>Behavior</h5>
<ul>
<li>Input path MUST match with EntryMode, DONT NEED to check mode.</li>
<li>Create on existing dir SHOULD succeed.</li>
</ul>
</div></details><details class="toggle method-toggle" open><summary><section id="method.stat" class="method"><h4 class="code-header">fn <a href="#method.stat" class="fn">stat</a>(
&amp;self,
path: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
args: OpStat,
) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;RpStat, <a class="struct" href="struct.Error.html" title="struct object_store::Error">Error</a>&gt;&gt; + MaybeSend</h4></section></summary><div class="docblock"><p>Invoke the <code>stat</code> operation on the specified path.</p>
<p>Require [<code>Capability::stat</code>]</p>
<h5 id="behavior-1"><a class="doc-anchor" href="#behavior-1">§</a>Behavior</h5>
<ul>
<li><code>stat</code> empty path means stat backends root path.</li>
<li><code>stat</code> a path endswith “/” means stating a dir.</li>
<li><code>mode</code> and <code>content_length</code> must be set.</li>
</ul>
</div></details><details class="toggle method-toggle" open><summary><section id="method.read" class="method"><h4 class="code-header">fn <a href="#method.read" class="fn">read</a>(
&amp;self,
path: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
args: <a class="struct" href="layers/mock/struct.OpRead.html" title="struct object_store::layers::mock::OpRead">OpRead</a>,
) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;(<a class="struct" href="layers/mock/struct.RpRead.html" title="struct object_store::layers::mock::RpRead">RpRead</a>, Self::<a class="associatedtype" href="trait.Access.html#associatedtype.Reader" title="type object_store::Access::Reader">Reader</a>), <a class="struct" href="struct.Error.html" title="struct object_store::Error">Error</a>&gt;&gt; + MaybeSend</h4></section></summary><div class="docblock"><p>Invoke the <code>read</code> operation on the specified path, returns a
<a href="struct.Reader.html" title="struct object_store::Reader"><code>Reader</code></a> if operate successful.</p>
<p>Require [<code>Capability::read</code>]</p>
<h5 id="behavior-2"><a class="doc-anchor" href="#behavior-2">§</a>Behavior</h5>
<ul>
<li>Input path MUST be file path, DONT NEED to check mode.</li>
<li>The returning content length may be smaller than the range specified.</li>
</ul>
</div></details><details class="toggle method-toggle" open><summary><section id="method.write" class="method"><h4 class="code-header">fn <a href="#method.write" class="fn">write</a>(
&amp;self,
path: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
args: <a class="struct" href="layers/mock/struct.OpWrite.html" title="struct object_store::layers::mock::OpWrite">OpWrite</a>,
) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;(<a class="struct" href="layers/mock/struct.RpWrite.html" title="struct object_store::layers::mock::RpWrite">RpWrite</a>, Self::<a class="associatedtype" href="trait.Access.html#associatedtype.Writer" title="type object_store::Access::Writer">Writer</a>), <a class="struct" href="struct.Error.html" title="struct object_store::Error">Error</a>&gt;&gt; + MaybeSend</h4></section></summary><div class="docblock"><p>Invoke the <code>write</code> operation on the specified path, returns a
written size if operate successful.</p>
<p>Require [<code>Capability::write</code>]</p>
<h5 id="behavior-3"><a class="doc-anchor" href="#behavior-3">§</a>Behavior</h5>
<ul>
<li>Input path MUST be file path, DONT NEED to check mode.</li>
</ul>
</div></details><details class="toggle method-toggle" open><summary><section id="method.delete" class="method"><h4 class="code-header">fn <a href="#method.delete" class="fn">delete</a>(
&amp;self,
) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;(<a class="struct" href="layers/mock/struct.RpDelete.html" title="struct object_store::layers::mock::RpDelete">RpDelete</a>, Self::<a class="associatedtype" href="trait.Access.html#associatedtype.Deleter" title="type object_store::Access::Deleter">Deleter</a>), <a class="struct" href="struct.Error.html" title="struct object_store::Error">Error</a>&gt;&gt; + MaybeSend</h4></section></summary><div class="docblock"><p>Invoke the <code>delete</code> operation on the specified path.</p>
<p>Require [<code>Capability::delete</code>]</p>
<h5 id="behavior-4"><a class="doc-anchor" href="#behavior-4">§</a>Behavior</h5>
<ul>
<li><code>delete</code> is an idempotent operation, its safe to call <code>Delete</code> on the same path multiple times.</li>
<li><code>delete</code> SHOULD return <code>Ok(())</code> if the path is deleted successfully or not exist.</li>
</ul>
</div></details><details class="toggle method-toggle" open><summary><section id="method.list" class="method"><h4 class="code-header">fn <a href="#method.list" class="fn">list</a>(
&amp;self,
path: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
args: <a class="struct" href="layers/mock/struct.OpList.html" title="struct object_store::layers::mock::OpList">OpList</a>,
) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;(<a class="struct" href="layers/mock/struct.RpList.html" title="struct object_store::layers::mock::RpList">RpList</a>, Self::<a class="associatedtype" href="trait.Access.html#associatedtype.Lister" title="type object_store::Access::Lister">Lister</a>), <a class="struct" href="struct.Error.html" title="struct object_store::Error">Error</a>&gt;&gt; + MaybeSend</h4></section></summary><div class="docblock"><p>Invoke the <code>list</code> operation on the specified path.</p>
<p>Require [<code>Capability::list</code>]</p>
<h5 id="behavior-5"><a class="doc-anchor" href="#behavior-5">§</a>Behavior</h5>
<ul>
<li>Input path MUST be dir path, DONT NEED to check mode.</li>
<li>List non-exist dir should return Empty.</li>
</ul>
</div></details><details class="toggle method-toggle" open><summary><section id="method.copy" class="method"><h4 class="code-header">fn <a href="#method.copy" class="fn">copy</a>(
&amp;self,
from: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
to: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
args: OpCopy,
) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;RpCopy, <a class="struct" href="struct.Error.html" title="struct object_store::Error">Error</a>&gt;&gt; + MaybeSend</h4></section></summary><div class="docblock"><p>Invoke the <code>copy</code> operation on the specified <code>from</code> path and <code>to</code> path.</p>
<p>Require [Capability::copy]</p>
<h5 id="behaviour"><a class="doc-anchor" href="#behaviour">§</a>Behaviour</h5>
<ul>
<li><code>from</code> and <code>to</code> MUST be file path, DONT NEED to check mode.</li>
<li>Copy on existing file SHOULD succeed.</li>
<li>Copy on existing file SHOULD overwrite and truncate.</li>
</ul>
</div></details><details class="toggle method-toggle" open><summary><section id="method.rename" class="method"><h4 class="code-header">fn <a href="#method.rename" class="fn">rename</a>(
&amp;self,
from: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
to: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
args: OpRename,
) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;RpRename, <a class="struct" href="struct.Error.html" title="struct object_store::Error">Error</a>&gt;&gt; + MaybeSend</h4></section></summary><div class="docblock"><p>Invoke the <code>rename</code> operation on the specified <code>from</code> path and <code>to</code> path.</p>
<p>Require [Capability::rename]</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.presign" class="method"><h4 class="code-header">fn <a href="#method.presign" class="fn">presign</a>(
&amp;self,
path: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
args: OpPresign,
) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;RpPresign, <a class="struct" href="struct.Error.html" title="struct object_store::Error">Error</a>&gt;&gt; + MaybeSend</h4></section></summary><div class="docblock"><p>Invoke the <code>presign</code> operation on the specified path.</p>
<p>Require [<code>Capability::presign</code>]</p>
<h5 id="behavior-6"><a class="doc-anchor" href="#behavior-6">§</a>Behavior</h5>
<ul>
<li>This API is optional, return <a href="https://doc.rust-lang.org/nightly/std/io/error/enum.ErrorKind.html#variant.Unsupported" title="variant std::io::error::ErrorKind::Unsupported"><code>std::io::ErrorKind::Unsupported</code></a> if not supported.</li>
</ul>
</div></details></div><h2 id="dyn-compatibility" class="section-header">Dyn Compatibility<a href="#dyn-compatibility" class="anchor">§</a></h2><div class="dyn-compatibility-info"><p>This trait is <b>not</b> <a href="https://doc.rust-lang.org/nightly/reference/items/traits.html#dyn-compatibility">dyn compatible</a>.</p><p><i>In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.</i></p></div><h2 id="foreign-impls" class="section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-Access-for-()" class="impl"><a href="#impl-Access-for-()" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Access.html" title="trait object_store::Access">Access</a> for <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a></h3><div class="docblock"><p>Dummy implementation of accessor.</p>
</div></section></summary><div class="impl-items"><section id="associatedtype.Reader-1" class="associatedtype trait-impl"><a href="#associatedtype.Reader-1" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Reader</a> = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a></h4></section><section id="associatedtype.Writer-1" class="associatedtype trait-impl"><a href="#associatedtype.Writer-1" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Writer</a> = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a></h4></section><section id="associatedtype.Lister-1" class="associatedtype trait-impl"><a href="#associatedtype.Lister-1" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Lister</a> = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a></h4></section><section id="associatedtype.Deleter-1" class="associatedtype trait-impl"><a href="#associatedtype.Deleter-1" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Deleter</a> = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a></h4></section><section id="method.info" class="method trait-impl"><a href="#method.info" class="anchor">§</a><h4 class="code-header">fn <a class="fn">info</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;AccessorInfo&gt;</h4></section></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Access-for-Arc%3CT%3E" class="impl"><a href="#impl-Access-for-Arc%3CT%3E" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="trait.Access.html" title="trait object_store::Access">Access</a> for <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;T&gt;<div class="where">where
T: <a class="trait" href="trait.Access.html" title="trait object_store::Access">Access</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3><div class="docblock"><p>All functions in <code>Accessor</code> only requires <code>&amp;self</code>, so its safe to implement
<code>Accessor</code> for <code>Arc&lt;impl Access&gt;</code>.</p>
</div></section></summary><div class="impl-items"><section id="associatedtype.Reader-2" class="associatedtype trait-impl"><a href="#associatedtype.Reader-2" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Reader</a> = &lt;T as <a class="trait" href="trait.Access.html" title="trait object_store::Access">Access</a>&gt;::<a class="associatedtype" href="trait.Access.html#associatedtype.Reader" title="type object_store::Access::Reader">Reader</a></h4></section><section id="associatedtype.Writer-2" class="associatedtype trait-impl"><a href="#associatedtype.Writer-2" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Writer</a> = &lt;T as <a class="trait" href="trait.Access.html" title="trait object_store::Access">Access</a>&gt;::<a class="associatedtype" href="trait.Access.html#associatedtype.Writer" title="type object_store::Access::Writer">Writer</a></h4></section><section id="associatedtype.Lister-2" class="associatedtype trait-impl"><a href="#associatedtype.Lister-2" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Lister</a> = &lt;T as <a class="trait" href="trait.Access.html" title="trait object_store::Access">Access</a>&gt;::<a class="associatedtype" href="trait.Access.html#associatedtype.Lister" title="type object_store::Access::Lister">Lister</a></h4></section><section id="associatedtype.Deleter-2" class="associatedtype trait-impl"><a href="#associatedtype.Deleter-2" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Deleter</a> = &lt;T as <a class="trait" href="trait.Access.html" title="trait object_store::Access">Access</a>&gt;::<a class="associatedtype" href="trait.Access.html#associatedtype.Deleter" title="type object_store::Access::Deleter">Deleter</a></h4></section><section id="method.info-1" class="method trait-impl"><a href="#method.info-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">info</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;AccessorInfo&gt;</h4></section><section id="method.create_dir-1" class="method trait-impl"><a href="#method.create_dir-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">create_dir</a>(
&amp;self,
path: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
args: OpCreateDir,
) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;RpCreateDir, <a class="struct" href="struct.Error.html" title="struct object_store::Error">Error</a>&gt;&gt; + MaybeSend</h4></section><section id="method.stat-1" class="method trait-impl"><a href="#method.stat-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">stat</a>(
&amp;self,
path: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
args: OpStat,
) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;RpStat, <a class="struct" href="struct.Error.html" title="struct object_store::Error">Error</a>&gt;&gt; + MaybeSend</h4></section><section id="method.read-1" class="method trait-impl"><a href="#method.read-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">read</a>(
&amp;self,
path: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
args: <a class="struct" href="layers/mock/struct.OpRead.html" title="struct object_store::layers::mock::OpRead">OpRead</a>,
) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;(<a class="struct" href="layers/mock/struct.RpRead.html" title="struct object_store::layers::mock::RpRead">RpRead</a>, &lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;T&gt; as <a class="trait" href="trait.Access.html" title="trait object_store::Access">Access</a>&gt;::<a class="associatedtype" href="trait.Access.html#associatedtype.Reader" title="type object_store::Access::Reader">Reader</a>), <a class="struct" href="struct.Error.html" title="struct object_store::Error">Error</a>&gt;&gt; + MaybeSend</h4></section><section id="method.write-1" class="method trait-impl"><a href="#method.write-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">write</a>(
&amp;self,
path: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
args: <a class="struct" href="layers/mock/struct.OpWrite.html" title="struct object_store::layers::mock::OpWrite">OpWrite</a>,
) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;(<a class="struct" href="layers/mock/struct.RpWrite.html" title="struct object_store::layers::mock::RpWrite">RpWrite</a>, &lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;T&gt; as <a class="trait" href="trait.Access.html" title="trait object_store::Access">Access</a>&gt;::<a class="associatedtype" href="trait.Access.html#associatedtype.Writer" title="type object_store::Access::Writer">Writer</a>), <a class="struct" href="struct.Error.html" title="struct object_store::Error">Error</a>&gt;&gt; + MaybeSend</h4></section><section id="method.delete-1" class="method trait-impl"><a href="#method.delete-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">delete</a>(
&amp;self,
) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;(<a class="struct" href="layers/mock/struct.RpDelete.html" title="struct object_store::layers::mock::RpDelete">RpDelete</a>, &lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;T&gt; as <a class="trait" href="trait.Access.html" title="trait object_store::Access">Access</a>&gt;::<a class="associatedtype" href="trait.Access.html#associatedtype.Deleter" title="type object_store::Access::Deleter">Deleter</a>), <a class="struct" href="struct.Error.html" title="struct object_store::Error">Error</a>&gt;&gt; + MaybeSend</h4></section><section id="method.list-1" class="method trait-impl"><a href="#method.list-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">list</a>(
&amp;self,
path: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
args: <a class="struct" href="layers/mock/struct.OpList.html" title="struct object_store::layers::mock::OpList">OpList</a>,
) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;(<a class="struct" href="layers/mock/struct.RpList.html" title="struct object_store::layers::mock::RpList">RpList</a>, &lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;T&gt; as <a class="trait" href="trait.Access.html" title="trait object_store::Access">Access</a>&gt;::<a class="associatedtype" href="trait.Access.html#associatedtype.Lister" title="type object_store::Access::Lister">Lister</a>), <a class="struct" href="struct.Error.html" title="struct object_store::Error">Error</a>&gt;&gt; + MaybeSend</h4></section><section id="method.copy-1" class="method trait-impl"><a href="#method.copy-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">copy</a>(
&amp;self,
from: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
to: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
args: OpCopy,
) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;RpCopy, <a class="struct" href="struct.Error.html" title="struct object_store::Error">Error</a>&gt;&gt; + MaybeSend</h4></section><section id="method.rename-1" class="method trait-impl"><a href="#method.rename-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">rename</a>(
&amp;self,
from: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
to: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
args: OpRename,
) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;RpRename, <a class="struct" href="struct.Error.html" title="struct object_store::Error">Error</a>&gt;&gt; + MaybeSend</h4></section><section id="method.presign-1" class="method trait-impl"><a href="#method.presign-1" class="anchor">§</a><h4 class="code-header">fn <a class="fn">presign</a>(
&amp;self,
path: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
args: OpPresign,
) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;RpPresign, <a class="struct" href="struct.Error.html" title="struct object_store::Error">Error</a>&gt;&gt; + MaybeSend</h4></section></div></details><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><details class="toggle implementors-toggle"><summary><section id="impl-Access-for-dyn+AccessDyn" class="impl"><a href="#impl-Access-for-dyn+AccessDyn" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Access.html" title="trait object_store::Access">Access</a> for dyn AccessDyn</h3></section></summary><div class="impl-items"><section id="associatedtype.Reader-3" class="associatedtype trait-impl"><a href="#associatedtype.Reader-3" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Reader" class="associatedtype">Reader</a> = <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="layers/mock/trait.ReadDyn.html" title="trait object_store::layers::mock::ReadDyn">ReadDyn</a>&gt;</h4></section><section id="associatedtype.Writer-3" class="associatedtype trait-impl"><a href="#associatedtype.Writer-3" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Writer" class="associatedtype">Writer</a> = <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn WriteDyn&gt;</h4></section><section id="associatedtype.Deleter-3" class="associatedtype trait-impl"><a href="#associatedtype.Deleter-3" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Deleter" class="associatedtype">Deleter</a> = <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="layers/mock/trait.DeleteDyn.html" title="trait object_store::layers::mock::DeleteDyn">DeleteDyn</a>&gt;</h4></section><section id="associatedtype.Lister-3" class="associatedtype trait-impl"><a href="#associatedtype.Lister-3" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Lister" class="associatedtype">Lister</a> = <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn ListDyn&gt;</h4></section></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Access-for-L" class="impl"><a href="#impl-Access-for-L" class="anchor">§</a><h3 class="code-header">impl&lt;L&gt; <a class="trait" href="trait.Access.html" title="trait object_store::Access">Access</a> for L<div class="where">where
L: <a class="trait" href="layers/mock/trait.LayeredAccess.html" title="trait object_store::layers::mock::LayeredAccess">LayeredAccess</a>,</div></h3></section></summary><div class="impl-items"><section id="associatedtype.Reader-4" class="associatedtype trait-impl"><a href="#associatedtype.Reader-4" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Reader" class="associatedtype">Reader</a> = &lt;L as <a class="trait" href="layers/mock/trait.LayeredAccess.html" title="trait object_store::layers::mock::LayeredAccess">LayeredAccess</a>&gt;::<a class="associatedtype" href="layers/mock/trait.LayeredAccess.html#associatedtype.Reader" title="type object_store::layers::mock::LayeredAccess::Reader">Reader</a></h4></section><section id="associatedtype.Writer-4" class="associatedtype trait-impl"><a href="#associatedtype.Writer-4" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Writer" class="associatedtype">Writer</a> = &lt;L as <a class="trait" href="layers/mock/trait.LayeredAccess.html" title="trait object_store::layers::mock::LayeredAccess">LayeredAccess</a>&gt;::<a class="associatedtype" href="layers/mock/trait.LayeredAccess.html#associatedtype.Writer" title="type object_store::layers::mock::LayeredAccess::Writer">Writer</a></h4></section><section id="associatedtype.Lister-4" class="associatedtype trait-impl"><a href="#associatedtype.Lister-4" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Lister" class="associatedtype">Lister</a> = &lt;L as <a class="trait" href="layers/mock/trait.LayeredAccess.html" title="trait object_store::layers::mock::LayeredAccess">LayeredAccess</a>&gt;::<a class="associatedtype" href="layers/mock/trait.LayeredAccess.html#associatedtype.Lister" title="type object_store::layers::mock::LayeredAccess::Lister">Lister</a></h4></section><section id="associatedtype.Deleter-4" class="associatedtype trait-impl"><a href="#associatedtype.Deleter-4" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Deleter" class="associatedtype">Deleter</a> = &lt;L as <a class="trait" href="layers/mock/trait.LayeredAccess.html" title="trait object_store::layers::mock::LayeredAccess">LayeredAccess</a>&gt;::<a class="associatedtype" href="layers/mock/trait.LayeredAccess.html#associatedtype.Deleter" title="type object_store::layers::mock::LayeredAccess::Deleter">Deleter</a></h4></section></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Access-for-Backend%3CS%3E" class="impl"><a href="#impl-Access-for-Backend%3CS%3E" class="anchor">§</a><h3 class="code-header">impl&lt;S&gt; <a class="trait" href="trait.Access.html" title="trait object_store::Access">Access</a> for Backend&lt;S&gt;<div class="where">where
S: Adapter,</div></h3></section></summary><div class="impl-items"><section id="associatedtype.Reader-5" class="associatedtype trait-impl"><a href="#associatedtype.Reader-5" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Reader" class="associatedtype">Reader</a> = <a class="struct" href="struct.Buffer.html" title="struct object_store::Buffer">Buffer</a></h4></section><section id="associatedtype.Writer-5" class="associatedtype trait-impl"><a href="#associatedtype.Writer-5" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Writer" class="associatedtype">Writer</a> = KvWriter&lt;S&gt;</h4></section><section id="associatedtype.Lister-5" class="associatedtype trait-impl"><a href="#associatedtype.Lister-5" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Lister" class="associatedtype">Lister</a> = <a class="struct" href="layers/mock/struct.HierarchyLister.html" title="struct object_store::layers::mock::HierarchyLister">HierarchyLister</a>&lt;KvLister&lt;&lt;S as Adapter&gt;::Scanner&gt;&gt;</h4></section><section id="associatedtype.Deleter-5" class="associatedtype trait-impl"><a href="#associatedtype.Deleter-5" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Deleter" class="associatedtype">Deleter</a> = <a class="struct" href="layers/mock/struct.OneShotDeleter.html" title="struct object_store::layers::mock::OneShotDeleter">OneShotDeleter</a>&lt;KvDeleter&lt;S&gt;&gt;</h4></section></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Access-for-Backend%3CS%3E-1" class="impl"><a href="#impl-Access-for-Backend%3CS%3E-1" class="anchor">§</a><h3 class="code-header">impl&lt;S&gt; <a class="trait" href="trait.Access.html" title="trait object_store::Access">Access</a> for Backend&lt;S&gt;<div class="where">where
S: Adapter,</div></h3></section></summary><div class="impl-items"><section id="associatedtype.Reader-6" class="associatedtype trait-impl"><a href="#associatedtype.Reader-6" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Reader" class="associatedtype">Reader</a> = <a class="struct" href="struct.Buffer.html" title="struct object_store::Buffer">Buffer</a></h4></section><section id="associatedtype.Writer-6" class="associatedtype trait-impl"><a href="#associatedtype.Writer-6" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Writer" class="associatedtype">Writer</a> = KvWriter&lt;S&gt;</h4></section><section id="associatedtype.Lister-6" class="associatedtype trait-impl"><a href="#associatedtype.Lister-6" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Lister" class="associatedtype">Lister</a> = <a class="struct" href="layers/mock/struct.HierarchyLister.html" title="struct object_store::layers::mock::HierarchyLister">HierarchyLister</a>&lt;KvLister&gt;</h4></section><section id="associatedtype.Deleter-6" class="associatedtype trait-impl"><a href="#associatedtype.Deleter-6" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.Deleter" class="associatedtype">Deleter</a> = <a class="struct" href="layers/mock/struct.OneShotDeleter.html" title="struct object_store::layers::mock::OneShotDeleter">OneShotDeleter</a>&lt;KvDeleter&lt;S&gt;&gt;</h4></section></div></details></div><script src="../trait.impl/opendal/raw/accessor/trait.Access.js" data-ignore-extern-crates="opendal,std,alloc" async></script></section></div></main></body></html>