mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-01-14 17:23:09 +00:00
699 lines
140 KiB
HTML
699 lines
140 KiB
HTML
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Aws S3 and compatible services (including minio, digitalocean space, Tencent Cloud Object Storage(COS) and so on) support. For more information about s3-compatible services, refer to Compatible Services."><title>S3 in object_store::services - 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 struct"><!--[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="#">S3</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="#">S3</a></h2><h3><a href="#">Sections</a></h3><ul class="block top-toc"><li><a href="#capabilities" title="Capabilities">Capabilities</a></li><li><a href="#configuration" title="Configuration">Configuration</a></li><li><a href="#temporary-security-credentials" title="Temporary security credentials">Temporary security credentials</a></li><li><a href="#server-side-encryption" title="Server Side Encryption">Server Side Encryption</a></li><li><a href="#example" title="Example">Example</a></li><li><a href="#via-builder" title="Via Builder">Via Builder</a><ul><li><a href="#basic-setup" title="Basic Setup">Basic Setup</a></li><li><a href="#s3-with-sse-c" title="S3 with SSE-C">S3 with SSE-C</a></li><li><a href="#s3-with-sse-kms-and-aws-managed-kms-key" title="S3 with SSE-KMS and aws managed kms key">S3 with SSE-KMS and aws managed kms key</a></li><li><a href="#s3-with-sse-kms-and-customer-managed-kms-key" title="S3 with SSE-KMS and customer managed kms key">S3 with SSE-KMS and customer managed kms key</a></li><li><a href="#s3-with-sse-s3" title="S3 with SSE-S3">S3 with SSE-S3</a></li></ul></li><li><a href="#compatible-services" title="Compatible Services">Compatible Services</a><ul><li><a href="#aws-s3" title="AWS S3">AWS S3</a></li><li><a href="#alibaba-object-storage-service-oss" title="Alibaba Object Storage Service (OSS)">Alibaba Object Storage Service (OSS)</a></li><li><a href="#minio" title="Minio">Minio</a></li><li><a href="#qingstor-object-storage" title="QingStor Object Storage">QingStor Object Storage</a></li><li><a href="#scaleway-object-storage" title="Scaleway Object Storage">Scaleway Object Storage</a></li><li><a href="#tencent-cloud-object-storage-cos" title="Tencent Cloud Object Storage (COS)">Tencent Cloud Object Storage (COS)</a></li><li><a href="#wasabi-object-storage" title="Wasabi Object Storage">Wasabi Object Storage</a></li><li><a href="#cloudflare-r2" title="Cloudflare R2">Cloudflare R2</a></li><li><a href="#google-cloud-storage-xml-api" title="Google Cloud Storage XML API">Google Cloud Storage XML API</a></li><li><a href="#ceph-rados-gateway" title="Ceph Rados Gateway">Ceph Rados Gateway</a></li></ul></li></ul><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.config" title="config">config</a></li><li><a href="#structfield.customized_credential_load" title="customized_credential_load">customized_credential_load</a></li><li><a href="#structfield.http_client" title="http_client">http_client</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.access_key_id" title="access_key_id">access_key_id</a></li><li><a href="#method.allow_anonymous" title="allow_anonymous">allow_anonymous</a></li><li><a href="#method.batch_max_operations" title="batch_max_operations">batch_max_operations</a></li><li><a href="#method.bucket" title="bucket">bucket</a></li><li><a href="#method.checksum_algorithm" title="checksum_algorithm">checksum_algorithm</a></li><li><a href="#method.customized_credential_load" title="customized_credential_load">customized_credential_load</a></li><li><a href="#method.default_storage_class" title="default_storage_class">default_storage_class</a></li><li><a href="#method.delete_max_size" title="delete_max_size">delete_max_size</a></li><li><a href="#method.detect_region" title="detect_region">detect_region</a></li><li><a href="#method.disable_config_load" title="disable_config_load">disable_config_load</a></li><li><a href="#method.disable_ec2_metadata" title="disable_ec2_metadata">disable_ec2_metadata</a></li><li><a href="#method.disable_list_objects_v2" title="disable_list_objects_v2">disable_list_objects_v2</a></li><li><a href="#method.disable_stat_with_override" title="disable_stat_with_override">disable_stat_with_override</a></li><li><a href="#method.disable_write_with_if_match" title="disable_write_with_if_match">disable_write_with_if_match</a></li><li><a href="#method.enable_request_payer" title="enable_request_payer">enable_request_payer</a></li><li><a href="#method.enable_versioning" title="enable_versioning">enable_versioning</a></li><li><a href="#method.enable_virtual_host_style" title="enable_virtual_host_style">enable_virtual_host_style</a></li><li><a href="#method.enable_write_with_append" title="enable_write_with_append">enable_write_with_append</a></li><li><a href="#method.endpoint" title="endpoint">endpoint</a></li><li><a href="#method.external_id" title="external_id">external_id</a></li><li><a href="#method.http_client" title="http_client">http_client</a></li><li><a href="#method.region" title="region">region</a></li><li><a href="#method.role_arn" title="role_arn">role_arn</a></li><li><a href="#method.role_session_name" title="role_session_name">role_session_name</a></li><li><a href="#method.root" title="root">root</a></li><li><a href="#method.secret_access_key" title="secret_access_key">secret_access_key</a></li><li><a href="#method.security_token" title="security_token">security_token</a></li><li><a href="#method.server_side_encryption" title="server_side_encryption">server_side_encryption</a></li><li><a href="#method.server_side_encryption_aws_kms_key_id" title="server_side_encryption_aws_kms_key_id">server_side_encryption_aws_kms_key_id</a></li><li><a href="#method.server_side_encryption_customer_algorithm" title="server_side_encryption_customer_algorithm">server_side_encryption_customer_algorithm</a></li><li><a href="#method.server_side_encryption_customer_key" title="server_side_encryption_customer_key">server_side_encryption_customer_key</a></li><li><a href="#method.server_side_encryption_customer_key_md5" title="server_side_encryption_customer_key_md5">server_side_encryption_customer_key_md5</a></li><li><a href="#method.server_side_encryption_with_aws_managed_kms_key" title="server_side_encryption_with_aws_managed_kms_key">server_side_encryption_with_aws_managed_kms_key</a></li><li><a href="#method.server_side_encryption_with_customer_key" title="server_side_encryption_with_customer_key">server_side_encryption_with_customer_key</a></li><li><a href="#method.server_side_encryption_with_customer_managed_kms_key" title="server_side_encryption_with_customer_managed_kms_key">server_side_encryption_with_customer_managed_kms_key</a></li><li><a href="#method.server_side_encryption_with_s3_key" title="server_side_encryption_with_s3_key">server_side_encryption_with_s3_key</a></li><li><a href="#method.session_token" title="session_token">session_token</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Builder-for-S3" title="Builder">Builder</a></li><li><a href="#impl-Debug-for-S3" title="Debug">Debug</a></li><li><a href="#impl-Default-for-S3" title="Default">Default</a></li><li><a href="#impl-From%3C%26S3Connection%3E-for-S3" title="From<&S3Connection>">From<&S3Connection></a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-RefUnwindSafe-for-S3" title="!RefUnwindSafe">!RefUnwindSafe</a></li><li><a href="#impl-UnwindSafe-for-S3" title="!UnwindSafe">!UnwindSafe</a></li><li><a href="#impl-Freeze-for-S3" title="Freeze">Freeze</a></li><li><a href="#impl-Send-for-S3" title="Send">Send</a></li><li><a href="#impl-Sync-for-S3" title="Sync">Sync</a></li><li><a href="#impl-Unpin-for-S3" title="Unpin">Unpin</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T" title="Any">Any</a></li><li><a href="#impl-Any-for-T-1" title="Any">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T" title="Borrow<T>">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T" title="BorrowMut<T>">BorrowMut<T></a></li><li><a href="#impl-Conv-for-T" title="Conv">Conv</a></li><li><a href="#impl-ErasedDestructor-for-T" title="ErasedDestructor">ErasedDestructor</a></li><li><a href="#impl-FmtForward-for-T" title="FmtForward">FmtForward</a></li><li><a href="#impl-From%3CT%3E-for-T" title="From<T>">From<T></a></li><li><a href="#impl-FutureExt-for-T" title="FutureExt">FutureExt</a></li><li><a href="#impl-Instrument-for-T" title="Instrument">Instrument</a></li><li><a href="#impl-Into%3CU%3E-for-T" title="Into<U>">Into<U></a></li><li><a href="#impl-IntoRequest%3CT%3E-for-T" title="IntoRequest<T>">IntoRequest<T></a></li><li><a href="#impl-LayerExt%3CL%3E-for-L" title="LayerExt<L>">LayerExt<L></a></li><li><a href="#impl-MaybeSend-for-T" title="MaybeSend">MaybeSend</a></li><li><a href="#impl-Pipe-for-T" title="Pipe">Pipe</a></li><li><a href="#impl-PolicyExt-for-T" title="PolicyExt">PolicyExt</a></li><li><a href="#impl-Same-for-T" title="Same">Same</a></li><li><a href="#impl-ServiceExt-for-T" title="ServiceExt">ServiceExt</a></li><li><a href="#impl-Tap-for-T" title="Tap">Tap</a></li><li><a href="#impl-TryConv-for-T" title="TryConv">TryConv</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T" title="TryFrom<U>">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-T" title="TryInto<U>">TryInto<U></a></li><li><a href="#impl-VZip%3CV%3E-for-T" title="VZip<V>">VZip<V></a></li><li><a href="#impl-WithSubscriber-for-T" title="WithSubscriber">WithSubscriber</a></li></ul></section><div id="rustdoc-modnav"><h2><a href="index.html">In object_<wbr>store::<wbr>services</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>::<wbr><a href="index.html">services</a></div><h1>Struct <span class="struct">S3</span> <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 struct S3 {
|
||
config: <a class="struct" href="struct.S3Config.html" title="struct object_store::services::S3Config">S3Config</a>,
|
||
customized_credential_load: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn CredentialLoad>>,
|
||
http_client: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.HttpClient.html" title="struct object_store::HttpClient">HttpClient</a>>,
|
||
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Aws S3 and compatible services (including minio, digitalocean space, Tencent Cloud Object Storage(COS) and so on) support.
|
||
For more information about s3-compatible services, refer to <a href="#compatible-services">Compatible Services</a>.</p>
|
||
<h3 id="capabilities"><a class="doc-anchor" href="#capabilities">§</a>Capabilities</h3>
|
||
<p>This service can be used to:</p>
|
||
<ul>
|
||
<li><input disabled="" type="checkbox" checked=""/>
|
||
stat</li>
|
||
<li><input disabled="" type="checkbox" checked=""/>
|
||
read</li>
|
||
<li><input disabled="" type="checkbox" checked=""/>
|
||
write</li>
|
||
<li><input disabled="" type="checkbox" checked=""/>
|
||
append</li>
|
||
<li><input disabled="" type="checkbox" checked=""/>
|
||
create_dir</li>
|
||
<li><input disabled="" type="checkbox" checked=""/>
|
||
delete</li>
|
||
<li><input disabled="" type="checkbox" checked=""/>
|
||
copy</li>
|
||
<li><input disabled="" type="checkbox"/>
|
||
rename</li>
|
||
<li><input disabled="" type="checkbox" checked=""/>
|
||
list</li>
|
||
<li><input disabled="" type="checkbox" checked=""/>
|
||
presign</li>
|
||
<li><input disabled="" type="checkbox"/>
|
||
blocking</li>
|
||
</ul>
|
||
<h3 id="configuration"><a class="doc-anchor" href="#configuration">§</a>Configuration</h3>
|
||
<ul>
|
||
<li><code>root</code>: Set the work dir for backend.</li>
|
||
<li><code>bucket</code>: Set the container name for backend.</li>
|
||
<li><code>endpoint</code>: Set the endpoint for backend.</li>
|
||
<li><code>region</code>: Set the region for backend.</li>
|
||
<li><code>access_key_id</code>: Set the access_key_id for backend.</li>
|
||
<li><code>secret_access_key</code>: Set the secret_access_key for backend.</li>
|
||
<li><code>session_token</code>: Set the session_token for backend.</li>
|
||
<li><code>default_storage_class</code>: Set the default storage_class for backend.</li>
|
||
<li><code>server_side_encryption</code>: Set the server_side_encryption for backend.</li>
|
||
<li><code>server_side_encryption_aws_kms_key_id</code>: Set the server_side_encryption_aws_kms_key_id for backend.</li>
|
||
<li><code>server_side_encryption_customer_algorithm</code>: Set the server_side_encryption_customer_algorithm for backend.</li>
|
||
<li><code>server_side_encryption_customer_key</code>: Set the server_side_encryption_customer_key for backend.</li>
|
||
<li><code>server_side_encryption_customer_key_md5</code>: Set the server_side_encryption_customer_key_md5 for backend.</li>
|
||
<li><code>disable_config_load</code>: Disable aws config load from env.</li>
|
||
<li><code>enable_virtual_host_style</code>: Enable virtual host style.</li>
|
||
<li><code>disable_write_with_if_match</code>: Disable write with if match.</li>
|
||
<li><code>enable_request_payer</code>: Enable the request payer for backend.</li>
|
||
</ul>
|
||
<p>Refer to <a href="struct.S3.html" title="struct object_store::services::S3"><code>S3Builder</code></a>’s public API docs for more information.</p>
|
||
<h3 id="temporary-security-credentials"><a class="doc-anchor" href="#temporary-security-credentials">§</a>Temporary security credentials</h3>
|
||
<p>OpenDAL now provides support for S3 temporary security credentials in IAM.</p>
|
||
<p>The way to take advantage of this feature is to build your S3 backend with <code>Builder::session_token</code>.</p>
|
||
<p>But OpenDAL will not refresh the temporary security credentials, please keep in mind to refresh those credentials in time.</p>
|
||
<h3 id="server-side-encryption"><a class="doc-anchor" href="#server-side-encryption">§</a>Server Side Encryption</h3>
|
||
<p>OpenDAL provides full support of S3 Server Side Encryption(SSE) features.</p>
|
||
<p>The easiest way to configure them is to use helper functions like</p>
|
||
<ul>
|
||
<li>SSE-KMS: <code>server_side_encryption_with_aws_managed_kms_key</code></li>
|
||
<li>SSE-KMS: <code>server_side_encryption_with_customer_managed_kms_key</code></li>
|
||
<li>SSE-S3: <code>server_side_encryption_with_s3_key</code></li>
|
||
<li>SSE-C: <code>server_side_encryption_with_customer_key</code></li>
|
||
</ul>
|
||
<p>If those functions don’t fulfill need, low-level options are also provided:</p>
|
||
<ul>
|
||
<li>Use service managed kms key
|
||
<ul>
|
||
<li><code>server_side_encryption="aws:kms"</code></li>
|
||
</ul>
|
||
</li>
|
||
<li>Use customer provided kms key
|
||
<ul>
|
||
<li><code>server_side_encryption="aws:kms"</code></li>
|
||
<li><code>server_side_encryption_aws_kms_key_id="your-kms-key"</code></li>
|
||
</ul>
|
||
</li>
|
||
<li>Use S3 managed key
|
||
<ul>
|
||
<li><code>server_side_encryption="AES256"</code></li>
|
||
</ul>
|
||
</li>
|
||
<li>Use customer key
|
||
<ul>
|
||
<li><code>server_side_encryption_customer_algorithm="AES256"</code></li>
|
||
<li><code>server_side_encryption_customer_key="base64-of-your-aes256-key"</code></li>
|
||
<li><code>server_side_encryption_customer_key_md5="base64-of-your-aes256-key-md5"</code></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<p>After SSE have been configured, all requests send by this backed will attach those headers.</p>
|
||
<p>Reference: <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html">Protecting data using server-side encryption</a></p>
|
||
<h3 id="example"><a class="doc-anchor" href="#example">§</a>Example</h3><h3 id="via-builder"><a class="doc-anchor" href="#via-builder">§</a>Via Builder</h3><h4 id="basic-setup"><a class="doc-anchor" href="#basic-setup">§</a>Basic Setup</h4>
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::sync::Arc;
|
||
|
||
<span class="kw">use </span>anyhow::Result;
|
||
<span class="kw">use </span>opendal::services::S3;
|
||
<span class="kw">use </span>opendal::Operator;
|
||
|
||
<span class="attr">#[tokio::main]
|
||
</span><span class="kw">async fn </span>main() -> <span class="prelude-ty">Result</span><()> {
|
||
<span class="comment">// Create s3 backend builder.
|
||
</span><span class="kw">let </span><span class="kw-2">mut </span>builder = S3::default()
|
||
<span class="comment">// Set the root for s3, all operations will happen under this root.
|
||
//
|
||
// NOTE: the root must be absolute path.
|
||
</span>.root(<span class="string">"/path/to/dir"</span>)
|
||
<span class="comment">// Set the bucket name. This is required.
|
||
</span>.bucket(<span class="string">"test"</span>)
|
||
<span class="comment">// Set the region. This is required for some services, if you don't care about it, for example Minio service, just set it to "auto", it will be ignored.
|
||
</span>.region(<span class="string">"us-east-1"</span>)
|
||
<span class="comment">// Set the endpoint.
|
||
//
|
||
// For examples:
|
||
// - "https://s3.amazonaws.com"
|
||
// - "http://127.0.0.1:9000"
|
||
// - "https://oss-ap-northeast-1.aliyuncs.com"
|
||
// - "https://cos.ap-seoul.myqcloud.com"
|
||
//
|
||
// Default to "https://s3.amazonaws.com"
|
||
</span>.endpoint(<span class="string">"https://s3.amazonaws.com"</span>)
|
||
<span class="comment">// Set the access_key_id and secret_access_key.
|
||
//
|
||
// OpenDAL will try load credential from the env.
|
||
// If credential not set and no valid credential in env, OpenDAL will
|
||
// send request without signing like anonymous user.
|
||
</span>.access_key_id(<span class="string">"access_key_id"</span>)
|
||
.secret_access_key(<span class="string">"secret_access_key"</span>);
|
||
|
||
<span class="kw">let </span>op: Operator = Operator::new(builder)<span class="question-mark">?</span>.finish();
|
||
|
||
<span class="prelude-val">Ok</span>(())
|
||
}
|
||
</code></pre></div><h4 id="s3-with-sse-c"><a class="doc-anchor" href="#s3-with-sse-c">§</a>S3 with SSE-C</h4>
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>anyhow::Result;
|
||
<span class="kw">use </span>log::info;
|
||
<span class="kw">use </span>opendal::services::S3;
|
||
<span class="kw">use </span>opendal::Operator;
|
||
|
||
<span class="attr">#[tokio::main]
|
||
</span><span class="kw">async fn </span>main() -> <span class="prelude-ty">Result</span><()> {
|
||
<span class="kw">let </span><span class="kw-2">mut </span>builder = S3::default()
|
||
.root(<span class="string">"/path/to/dir"</span>)
|
||
.bucket(<span class="string">"test"</span>)
|
||
.region(<span class="string">"us-east-1"</span>)
|
||
.endpoint(<span class="string">"https://s3.amazonaws.com"</span>)
|
||
.access_key_id(<span class="string">"access_key_id"</span>)
|
||
.secret_access_key(<span class="string">"secret_access_key"</span>)
|
||
<span class="comment">// Enable SSE-C
|
||
</span>.server_side_encryption_with_customer_key(<span class="string">"AES256"</span>, <span class="string">"customer_key"</span>.as_bytes());
|
||
|
||
<span class="kw">let </span>op = Operator::new(builder)<span class="question-mark">?</span>.finish();
|
||
<span class="macro">info!</span>(<span class="string">"operator: {:?}"</span>, op);
|
||
|
||
<span class="comment">// Writing your testing code here.
|
||
|
||
</span><span class="prelude-val">Ok</span>(())
|
||
}</code></pre></div><h4 id="s3-with-sse-kms-and-aws-managed-kms-key"><a class="doc-anchor" href="#s3-with-sse-kms-and-aws-managed-kms-key">§</a>S3 with SSE-KMS and aws managed kms key</h4>
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>anyhow::Result;
|
||
<span class="kw">use </span>log::info;
|
||
<span class="kw">use </span>opendal::services::S3;
|
||
<span class="kw">use </span>opendal::Operator;
|
||
|
||
<span class="attr">#[tokio::main]
|
||
</span><span class="kw">async fn </span>main() -> <span class="prelude-ty">Result</span><()> {
|
||
<span class="kw">let </span><span class="kw-2">mut </span>builder = S3::default()
|
||
<span class="comment">// Setup builders
|
||
</span>.root(<span class="string">"/path/to/dir"</span>)
|
||
.bucket(<span class="string">"test"</span>)
|
||
.region(<span class="string">"us-east-1"</span>)
|
||
.endpoint(<span class="string">"https://s3.amazonaws.com"</span>)
|
||
.access_key_id(<span class="string">"access_key_id"</span>)
|
||
.secret_access_key(<span class="string">"secret_access_key"</span>)
|
||
<span class="comment">// Enable SSE-KMS with aws managed kms key
|
||
</span>.server_side_encryption_with_aws_managed_kms_key();
|
||
|
||
<span class="kw">let </span>op = Operator::new(builder)<span class="question-mark">?</span>.finish();
|
||
<span class="macro">info!</span>(<span class="string">"operator: {:?}"</span>, op);
|
||
|
||
<span class="comment">// Writing your testing code here.
|
||
|
||
</span><span class="prelude-val">Ok</span>(())
|
||
}</code></pre></div><h4 id="s3-with-sse-kms-and-customer-managed-kms-key"><a class="doc-anchor" href="#s3-with-sse-kms-and-customer-managed-kms-key">§</a>S3 with SSE-KMS and customer managed kms key</h4>
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>anyhow::Result;
|
||
<span class="kw">use </span>log::info;
|
||
<span class="kw">use </span>opendal::services::S3;
|
||
<span class="kw">use </span>opendal::Operator;
|
||
|
||
<span class="attr">#[tokio::main]
|
||
</span><span class="kw">async fn </span>main() -> <span class="prelude-ty">Result</span><()> {
|
||
<span class="kw">let </span><span class="kw-2">mut </span>builder = S3::default()
|
||
<span class="comment">// Setup builders
|
||
</span>.root(<span class="string">"/path/to/dir"</span>)
|
||
.bucket(<span class="string">"test"</span>)
|
||
.region(<span class="string">"us-east-1"</span>)
|
||
.endpoint(<span class="string">"https://s3.amazonaws.com"</span>)
|
||
.access_key_id(<span class="string">"access_key_id"</span>)
|
||
.secret_access_key(<span class="string">"secret_access_key"</span>)
|
||
<span class="comment">// Enable SSE-KMS with customer managed kms key
|
||
</span>.server_side_encryption_with_customer_managed_kms_key(<span class="string">"aws_kms_key_id"</span>);
|
||
|
||
<span class="kw">let </span>op = Operator::new(builder)<span class="question-mark">?</span>.finish();
|
||
<span class="macro">info!</span>(<span class="string">"operator: {:?}"</span>, op);
|
||
|
||
<span class="comment">// Writing your testing code here.
|
||
|
||
</span><span class="prelude-val">Ok</span>(())
|
||
}</code></pre></div><h4 id="s3-with-sse-s3"><a class="doc-anchor" href="#s3-with-sse-s3">§</a>S3 with SSE-S3</h4>
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>anyhow::Result;
|
||
<span class="kw">use </span>log::info;
|
||
<span class="kw">use </span>opendal::services::S3;
|
||
<span class="kw">use </span>opendal::Operator;
|
||
|
||
<span class="attr">#[tokio::main]
|
||
</span><span class="kw">async fn </span>main() -> <span class="prelude-ty">Result</span><()> {
|
||
<span class="kw">let </span><span class="kw-2">mut </span>builder = S3::default()
|
||
<span class="comment">// Setup builders
|
||
</span>.root(<span class="string">"/path/to/dir"</span>)
|
||
.bucket(<span class="string">"test"</span>)
|
||
.region(<span class="string">"us-east-1"</span>)
|
||
.endpoint(<span class="string">"https://s3.amazonaws.com"</span>)
|
||
.access_key_id(<span class="string">"access_key_id"</span>)
|
||
.secret_access_key(<span class="string">"secret_access_key"</span>)
|
||
<span class="comment">// Enable SSE-S3
|
||
</span>.server_side_encryption_with_s3_key();
|
||
|
||
<span class="kw">let </span>op = Operator::new(builder)<span class="question-mark">?</span>.finish();
|
||
<span class="macro">info!</span>(<span class="string">"operator: {:?}"</span>, op);
|
||
|
||
<span class="comment">// Writing your testing code here.
|
||
|
||
</span><span class="prelude-val">Ok</span>(())
|
||
}</code></pre></div><h3 id="compatible-services"><a class="doc-anchor" href="#compatible-services">§</a>Compatible Services</h3><h4 id="aws-s3"><a class="doc-anchor" href="#aws-s3">§</a>AWS S3</h4>
|
||
<p><a href="https://aws.amazon.com/s3/">AWS S3</a> is the default implementations of s3 services. Only <code>bucket</code> is required.</p>
|
||
|
||
<div class="example-wrap ignore"><a href="#" class="tooltip" title="This example is not tested">ⓘ</a><pre class="rust rust-example-rendered"><code>builder.bucket(<span class="string">"<bucket_name>"</span>);</code></pre></div><h4 id="alibaba-object-storage-service-oss"><a class="doc-anchor" href="#alibaba-object-storage-service-oss">§</a>Alibaba Object Storage Service (OSS)</h4>
|
||
<p><a href="https://www.alibabacloud.com/product/object-storage-service">OSS</a> is a s3 compatible service provided by <a href="https://www.alibabacloud.com">Alibaba Cloud</a>.</p>
|
||
<p>To connect to OSS, we need to set:</p>
|
||
<ul>
|
||
<li><code>endpoint</code>: The endpoint of oss, for example: <code>https://oss-cn-hangzhou.aliyuncs.com</code></li>
|
||
<li><code>bucket</code>: The bucket name of oss.</li>
|
||
</ul>
|
||
<blockquote>
|
||
<p>OSS provide internal endpoint for used at alibabacloud internally, please visit <a href="https://www.alibabacloud.com/help/en/object-storage-service/latest/regions-and-endpoints">OSS Regions and endpoints</a> for more details.</p>
|
||
</blockquote>
|
||
<blockquote>
|
||
<p>OSS only supports the virtual host style, users could meet errors like:</p>
|
||
<div class="example-wrap"><pre class="language-xml"><code><?xml version="1.0" encoding="UTF-8"?>
|
||
<Error>
|
||
<Code>SecondLevelDomainForbidden</Code>
|
||
<Message>The bucket you are attempting to access must be addressed using OSS third level domain.</Message>
|
||
<RequestId>62A1C265292C0632377F021F</RequestId>
|
||
<HostId>oss-cn-hangzhou.aliyuncs.com</HostId>
|
||
</Error></code></pre></div>
|
||
<p>In that case, please enable virtual host style for requesting.</p>
|
||
</blockquote>
|
||
|
||
<div class="example-wrap ignore"><a href="#" class="tooltip" title="This example is not tested">ⓘ</a><pre class="rust rust-example-rendered"><code>builder.endpoint(<span class="string">"https://oss-cn-hangzhou.aliyuncs.com"</span>);
|
||
builder.region(<span class="string">"<region>"</span>);
|
||
builder.bucket(<span class="string">"<bucket_name>"</span>);
|
||
builder.enable_virtual_host_style();</code></pre></div><h4 id="minio"><a class="doc-anchor" href="#minio">§</a>Minio</h4>
|
||
<p><a href="https://min.io/">minio</a> is an open-source s3 compatible services.</p>
|
||
<p>To connect to minio, we need to set:</p>
|
||
<ul>
|
||
<li><code>endpoint</code>: The endpoint of minio, for example: <code>http://127.0.0.1:9000</code></li>
|
||
<li><code>region</code>: The region of minio. If you don’t care about it, just set it to “auto”, it will be ignored.</li>
|
||
<li><code>bucket</code>: The bucket name of minio.</li>
|
||
</ul>
|
||
|
||
<div class="example-wrap ignore"><a href="#" class="tooltip" title="This example is not tested">ⓘ</a><pre class="rust rust-example-rendered"><code>builder.endpoint(<span class="string">"http://127.0.0.1:9000"</span>);
|
||
builder.region(<span class="string">"<region>"</span>);
|
||
builder.bucket(<span class="string">"<bucket_name>"</span>);</code></pre></div><h4 id="qingstor-object-storage"><a class="doc-anchor" href="#qingstor-object-storage">§</a>QingStor Object Storage</h4>
|
||
<p><a href="https://www.qingcloud.com/products/qingstor">QingStor Object Storage</a> is a S3-compatible service provided by <a href="https://www.qingcloud.com/">QingCloud</a>.</p>
|
||
<p>To connect to QingStor Object Storage, we need to set:</p>
|
||
<ul>
|
||
<li><code>endpoint</code>: The endpoint of QingStor s3 compatible endpoint, for example: <code>https://s3.pek3b.qingstor.com</code></li>
|
||
<li><code>bucket</code>: The bucket name.</li>
|
||
</ul>
|
||
<h4 id="scaleway-object-storage"><a class="doc-anchor" href="#scaleway-object-storage">§</a>Scaleway Object Storage</h4>
|
||
<p><a href="https://www.scaleway.com/en/object-storage/">Scaleway Object Storage</a> is a S3-compatible and multi-AZ redundant object storage service.</p>
|
||
<p>To connect to Scaleway Object Storage, we need to set:</p>
|
||
<ul>
|
||
<li><code>endpoint</code>: The endpoint of scaleway, for example: <code>https://s3.nl-ams.scw.cloud</code></li>
|
||
<li><code>region</code>: The region of scaleway.</li>
|
||
<li><code>bucket</code>: The bucket name of scaleway.</li>
|
||
</ul>
|
||
<h4 id="tencent-cloud-object-storage-cos"><a class="doc-anchor" href="#tencent-cloud-object-storage-cos">§</a>Tencent Cloud Object Storage (COS)</h4>
|
||
<p><a href="https://intl.cloud.tencent.com/products/cos">COS</a> is a s3 compatible service provided by <a href="https://intl.cloud.tencent.com/">Tencent Cloud</a>.</p>
|
||
<p>To connect to COS, we need to set:</p>
|
||
<ul>
|
||
<li><code>endpoint</code>: The endpoint of cos, for example: <code>https://cos.ap-beijing.myqcloud.com</code></li>
|
||
<li><code>bucket</code>: The bucket name of cos.</li>
|
||
</ul>
|
||
<h4 id="wasabi-object-storage"><a class="doc-anchor" href="#wasabi-object-storage">§</a>Wasabi Object Storage</h4>
|
||
<p><a href="https://wasabi.com/">Wasabi</a> is a s3 compatible service.</p>
|
||
<blockquote>
|
||
<p>Cloud storage pricing that is 80% less than Amazon S3.</p>
|
||
</blockquote>
|
||
<p>To connect to wasabi, we need to set:</p>
|
||
<ul>
|
||
<li><code>endpoint</code>: The endpoint of wasabi, for example: <code>https://s3.us-east-2.wasabisys.com</code></li>
|
||
<li><code>bucket</code>: The bucket name of wasabi.</li>
|
||
</ul>
|
||
<blockquote>
|
||
<p>Refer to <a href="https://wasabi-support.zendesk.com/hc/en-us/articles/360015106031">What are the service URLs for Wasabi’s different storage regions?</a> for more details.</p>
|
||
</blockquote>
|
||
<h4 id="cloudflare-r2"><a class="doc-anchor" href="#cloudflare-r2">§</a>Cloudflare R2</h4>
|
||
<p><a href="https://developers.cloudflare.com/r2/">Cloudflare R2</a> provides s3 compatible API.</p>
|
||
<blockquote>
|
||
<p>Cloudflare R2 Storage allows developers to store large amounts of unstructured data without the costly egress bandwidth fees associated with typical cloud storage services.</p>
|
||
</blockquote>
|
||
<p>To connect to r2, we need to set:</p>
|
||
<ul>
|
||
<li><code>endpoint</code>: The endpoint of r2, for example: <code>https://<account_id>.r2.cloudflarestorage.com</code></li>
|
||
<li><code>bucket</code>: The bucket name of r2.</li>
|
||
<li><code>region</code>: When you create a new bucket, the data location is set to Automatic by default. So please use <code>auto</code> for region.</li>
|
||
<li><code>batch_max_operations</code>: R2’s delete objects will return <code>Internal Error</code> if the batch is larger than <code>700</code>. Please set this value <code><= 700</code> to make sure batch delete work as expected.</li>
|
||
<li><code>enable_exact_buf_write</code>: R2 requires the non-tailing parts size to be exactly the same. Please enable this option to avoid the error <code>All non-trailing parts must have the same length</code>.</li>
|
||
</ul>
|
||
<h4 id="google-cloud-storage-xml-api"><a class="doc-anchor" href="#google-cloud-storage-xml-api">§</a>Google Cloud Storage XML API</h4>
|
||
<p><a href="https://cloud.google.com/storage/docs/xml-api/overview">Google Cloud Storage XML API</a> provides s3 compatible API.</p>
|
||
<ul>
|
||
<li><code>endpoint</code>: The endpoint of Google Cloud Storage XML API, for example: <code>https://storage.googleapis.com</code></li>
|
||
<li><code>bucket</code>: The bucket name.</li>
|
||
<li>To access GCS via S3 API, please enable <code>features = ["native-tls"]</code> in your <code>Cargo.toml</code> to avoid connection being reset when using <code>rustls</code>. Tracking in <a href="https://github.com/seanmonstar/reqwest/issues/1809">https://github.com/seanmonstar/reqwest/issues/1809</a></li>
|
||
</ul>
|
||
<h4 id="ceph-rados-gateway"><a class="doc-anchor" href="#ceph-rados-gateway">§</a>Ceph Rados Gateway</h4>
|
||
<p>Ceph supports a RESTful API that is compatible with the basic data access model of the Amazon S3 API.</p>
|
||
<p>For more information, refer: <a href="https://docs.ceph.com/en/latest/radosgw/s3/">https://docs.ceph.com/en/latest/radosgw/s3/</a></p>
|
||
</div></details><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.config" class="structfield section-header"><a href="#structfield.config" class="anchor field">§</a><code>config: <a class="struct" href="struct.S3Config.html" title="struct object_store::services::S3Config">S3Config</a></code></span><span id="structfield.customized_credential_load" class="structfield section-header"><a href="#structfield.customized_credential_load" class="anchor field">§</a><code>customized_credential_load: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn CredentialLoad>></code></span><span id="structfield.http_client" class="structfield section-header"><a href="#structfield.http_client" class="anchor field">§</a><code>http_client: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../struct.HttpClient.html" title="struct object_store::HttpClient">HttpClient</a>></code></span><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 0.53.0: Use <code>Operator::update_http_client</code> instead</span></div></span><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-S3" class="impl"><a href="#impl-S3" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.root" class="method"><h4 class="code-header">pub fn <a href="#method.root" class="fn">root</a>(self, root: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Set root of this backend.</p>
|
||
<p>All operations will happen under this root.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.bucket" class="method"><h4 class="code-header">pub fn <a href="#method.bucket" class="fn">bucket</a>(self, bucket: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Set bucket name of this backend.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.endpoint" class="method"><h4 class="code-header">pub fn <a href="#method.endpoint" class="fn">endpoint</a>(self, endpoint: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Set endpoint of this backend.</p>
|
||
<p>Endpoint must be full uri, e.g.</p>
|
||
<ul>
|
||
<li>AWS S3: <code>https://s3.amazonaws.com</code> or <code>https://s3.{region}.amazonaws.com</code></li>
|
||
<li>Cloudflare R2: <code>https://<ACCOUNT_ID>.r2.cloudflarestorage.com</code></li>
|
||
<li>Aliyun OSS: <code>https://{region}.aliyuncs.com</code></li>
|
||
<li>Tencent COS: <code>https://cos.{region}.myqcloud.com</code></li>
|
||
<li>Minio: <code>http://127.0.0.1:9000</code></li>
|
||
</ul>
|
||
<p>If user inputs endpoint without scheme like “s3.amazonaws.com”, we
|
||
will prepend “https://” before it.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.region" class="method"><h4 class="code-header">pub fn <a href="#method.region" class="fn">region</a>(self, region: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Region represent the signing region of this endpoint. This is required
|
||
if you are using the default AWS S3 endpoint.</p>
|
||
<p>If using a custom endpoint,</p>
|
||
<ul>
|
||
<li>If region is set, we will take user’s input first.</li>
|
||
<li>If not, we will try to load it from environment.</li>
|
||
</ul>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.access_key_id" class="method"><h4 class="code-header">pub fn <a href="#method.access_key_id" class="fn">access_key_id</a>(self, v: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Set access_key_id of this backend.</p>
|
||
<ul>
|
||
<li>If access_key_id is set, we will take user’s input first.</li>
|
||
<li>If not, we will try to load it from environment.</li>
|
||
</ul>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.secret_access_key" class="method"><h4 class="code-header">pub fn <a href="#method.secret_access_key" class="fn">secret_access_key</a>(self, v: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Set secret_access_key of this backend.</p>
|
||
<ul>
|
||
<li>If secret_access_key is set, we will take user’s input first.</li>
|
||
<li>If not, we will try to load it from environment.</li>
|
||
</ul>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.role_arn" class="method"><h4 class="code-header">pub fn <a href="#method.role_arn" class="fn">role_arn</a>(self, v: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Set role_arn for this backend.</p>
|
||
<p>If <code>role_arn</code> is set, we will use already known config as source
|
||
credential to assume role with <code>role_arn</code>.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.external_id" class="method"><h4 class="code-header">pub fn <a href="#method.external_id" class="fn">external_id</a>(self, v: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Set external_id for this backend.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.role_session_name" class="method"><h4 class="code-header">pub fn <a href="#method.role_session_name" class="fn">role_session_name</a>(self, v: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Set role_session_name for this backend.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.default_storage_class" class="method"><h4 class="code-header">pub fn <a href="#method.default_storage_class" class="fn">default_storage_class</a>(self, v: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Set default storage_class for this backend.</p>
|
||
<p>Available values:</p>
|
||
<ul>
|
||
<li><code>DEEP_ARCHIVE</code></li>
|
||
<li><code>GLACIER</code></li>
|
||
<li><code>GLACIER_IR</code></li>
|
||
<li><code>INTELLIGENT_TIERING</code></li>
|
||
<li><code>ONEZONE_IA</code></li>
|
||
<li><code>OUTPOSTS</code></li>
|
||
<li><code>REDUCED_REDUNDANCY</code></li>
|
||
<li><code>STANDARD</code></li>
|
||
<li><code>STANDARD_IA</code></li>
|
||
</ul>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption" class="method"><h4 class="code-header">pub fn <a href="#method.server_side_encryption" class="fn">server_side_encryption</a>(self, v: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Set server_side_encryption for this backend.</p>
|
||
<p>Available values: <code>AES256</code>, <code>aws:kms</code>.</p>
|
||
<h5 id="note"><a class="doc-anchor" href="#note">§</a>Note</h5>
|
||
<p>This function is the low-level setting for SSE related features.</p>
|
||
<p>SSE related options should be set carefully to make them works.
|
||
Please use <code>server_side_encryption_with_*</code> helpers if even possible.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_aws_kms_key_id" class="method"><h4 class="code-header">pub fn <a href="#method.server_side_encryption_aws_kms_key_id" class="fn">server_side_encryption_aws_kms_key_id</a>(self, v: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Set server_side_encryption_aws_kms_key_id for this backend</p>
|
||
<ul>
|
||
<li>If <code>server_side_encryption</code> set to <code>aws:kms</code>, and <code>server_side_encryption_aws_kms_key_id</code>
|
||
is not set, S3 will use aws managed kms key to encrypt data.</li>
|
||
<li>If <code>server_side_encryption</code> set to <code>aws:kms</code>, and <code>server_side_encryption_aws_kms_key_id</code>
|
||
is a valid kms key id, S3 will use the provided kms key to encrypt data.</li>
|
||
<li>If the <code>server_side_encryption_aws_kms_key_id</code> is invalid or not found, an error will be
|
||
returned.</li>
|
||
<li>If <code>server_side_encryption</code> is not <code>aws:kms</code>, setting <code>server_side_encryption_aws_kms_key_id</code> is a noop.</li>
|
||
</ul>
|
||
<h5 id="note-1"><a class="doc-anchor" href="#note-1">§</a>Note</h5>
|
||
<p>This function is the low-level setting for SSE related features.</p>
|
||
<p>SSE related options should be set carefully to make them works.
|
||
Please use <code>server_side_encryption_with_*</code> helpers if even possible.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_customer_algorithm" class="method"><h4 class="code-header">pub fn <a href="#method.server_side_encryption_customer_algorithm" class="fn">server_side_encryption_customer_algorithm</a>(self, v: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Set server_side_encryption_customer_algorithm for this backend.</p>
|
||
<p>Available values: <code>AES256</code>.</p>
|
||
<h5 id="note-2"><a class="doc-anchor" href="#note-2">§</a>Note</h5>
|
||
<p>This function is the low-level setting for SSE related features.</p>
|
||
<p>SSE related options should be set carefully to make them works.
|
||
Please use <code>server_side_encryption_with_*</code> helpers if even possible.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_customer_key" class="method"><h4 class="code-header">pub fn <a href="#method.server_side_encryption_customer_key" class="fn">server_side_encryption_customer_key</a>(self, v: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Set server_side_encryption_customer_key for this backend.</p>
|
||
<h5 id="args"><a class="doc-anchor" href="#args">§</a>Args</h5>
|
||
<p><code>v</code>: base64 encoded key that matches algorithm specified in
|
||
<code>server_side_encryption_customer_algorithm</code>.</p>
|
||
<h5 id="note-3"><a class="doc-anchor" href="#note-3">§</a>Note</h5>
|
||
<p>This function is the low-level setting for SSE related features.</p>
|
||
<p>SSE related options should be set carefully to make them works.
|
||
Please use <code>server_side_encryption_with_*</code> helpers if even possible.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_customer_key_md5" class="method"><h4 class="code-header">pub fn <a href="#method.server_side_encryption_customer_key_md5" class="fn">server_side_encryption_customer_key_md5</a>(self, v: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Set server_side_encryption_customer_key_md5 for this backend.</p>
|
||
<h5 id="args-1"><a class="doc-anchor" href="#args-1">§</a>Args</h5>
|
||
<p><code>v</code>: MD5 digest of key specified in <code>server_side_encryption_customer_key</code>.</p>
|
||
<h5 id="note-4"><a class="doc-anchor" href="#note-4">§</a>Note</h5>
|
||
<p>This function is the low-level setting for SSE related features.</p>
|
||
<p>SSE related options should be set carefully to make them works.
|
||
Please use <code>server_side_encryption_with_*</code> helpers if even possible.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_with_aws_managed_kms_key" class="method"><h4 class="code-header">pub fn <a href="#method.server_side_encryption_with_aws_managed_kms_key" class="fn">server_side_encryption_with_aws_managed_kms_key</a>(self) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Enable server side encryption with aws managed kms key</p>
|
||
<p>As known as: SSE-KMS</p>
|
||
<p>NOTE: This function should not be used along with other <code>server_side_encryption_with_</code> functions.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_with_customer_managed_kms_key" class="method"><h4 class="code-header">pub fn <a href="#method.server_side_encryption_with_customer_managed_kms_key" class="fn">server_side_encryption_with_customer_managed_kms_key</a>(
|
||
self,
|
||
aws_kms_key_id: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
|
||
) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Enable server side encryption with customer managed kms key</p>
|
||
<p>As known as: SSE-KMS</p>
|
||
<p>NOTE: This function should not be used along with other <code>server_side_encryption_with_</code> functions.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_with_s3_key" class="method"><h4 class="code-header">pub fn <a href="#method.server_side_encryption_with_s3_key" class="fn">server_side_encryption_with_s3_key</a>(self) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Enable server side encryption with s3 managed key</p>
|
||
<p>As known as: SSE-S3</p>
|
||
<p>NOTE: This function should not be used along with other <code>server_side_encryption_with_</code> functions.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.server_side_encryption_with_customer_key" class="method"><h4 class="code-header">pub fn <a href="#method.server_side_encryption_with_customer_key" class="fn">server_side_encryption_with_customer_key</a>(
|
||
self,
|
||
algorithm: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
|
||
key: &[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>],
|
||
) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Enable server side encryption with customer key.</p>
|
||
<p>As known as: SSE-C</p>
|
||
<p>NOTE: This function should not be used along with other <code>server_side_encryption_with_</code> functions.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.session_token" class="method"><h4 class="code-header">pub fn <a href="#method.session_token" class="fn">session_token</a>(self, token: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Set temporary credential used in AWS S3 connections</p>
|
||
<h5 id="warning"><a class="doc-anchor" href="#warning">§</a>Warning</h5>
|
||
<p>session token’s lifetime is short and requires users to refresh in time.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.security_token" class="method"><h4 class="code-header">pub fn <a href="#method.security_token" class="fn">security_token</a>(self, token: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated: Please use <code>session_token</code> instead</span></div></span></summary><div class="docblock"><p>Set temporary credential used in AWS S3 connections</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.disable_config_load" class="method"><h4 class="code-header">pub fn <a href="#method.disable_config_load" class="fn">disable_config_load</a>(self) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Disable config load so that opendal will not load config from
|
||
environment.</p>
|
||
<p>For examples:</p>
|
||
<ul>
|
||
<li>envs like <code>AWS_ACCESS_KEY_ID</code></li>
|
||
<li>files like <code>~/.aws/config</code></li>
|
||
</ul>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.disable_list_objects_v2" class="method"><h4 class="code-header">pub fn <a href="#method.disable_list_objects_v2" class="fn">disable_list_objects_v2</a>(self) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Disable list objects v2 so that opendal will not use the older
|
||
List Objects V1 to list objects.</p>
|
||
<p>By default, OpenDAL uses List Objects V2 to list objects. However,
|
||
some legacy services do not yet support V2.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.enable_request_payer" class="method"><h4 class="code-header">pub fn <a href="#method.enable_request_payer" class="fn">enable_request_payer</a>(self) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Enable request payer so that OpenDAL will send requests with <code>x-amz-request-payer</code> header.</p>
|
||
<p>With this option the client accepts to pay for the request and data transfer costs.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.disable_ec2_metadata" class="method"><h4 class="code-header">pub fn <a href="#method.disable_ec2_metadata" class="fn">disable_ec2_metadata</a>(self) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Disable load credential from ec2 metadata.</p>
|
||
<p>This option is used to disable the default behavior of opendal
|
||
to load credential from ec2 metadata, a.k.a, IMDSv2</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.allow_anonymous" class="method"><h4 class="code-header">pub fn <a href="#method.allow_anonymous" class="fn">allow_anonymous</a>(self) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Allow anonymous will allow opendal to send request without signing
|
||
when credential is not loaded.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.enable_virtual_host_style" class="method"><h4 class="code-header">pub fn <a href="#method.enable_virtual_host_style" class="fn">enable_virtual_host_style</a>(self) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Enable virtual host style so that opendal will send API requests
|
||
in virtual host style instead of path style.</p>
|
||
<ul>
|
||
<li>By default, opendal will send API to <code>https://s3.us-east-1.amazonaws.com/bucket_name</code></li>
|
||
<li>Enabled, opendal will send API to <code>https://bucket_name.s3.us-east-1.amazonaws.com</code></li>
|
||
</ul>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.disable_stat_with_override" class="method"><h4 class="code-header">pub fn <a href="#method.disable_stat_with_override" class="fn">disable_stat_with_override</a>(self) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Disable stat with override so that opendal will not send stat request with override queries.</p>
|
||
<p>For example, R2 doesn’t support stat with <code>response_content_type</code> query.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.customized_credential_load" class="method"><h4 class="code-header">pub fn <a href="#method.customized_credential_load" class="fn">customized_credential_load</a>(
|
||
self,
|
||
cred: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><dyn CredentialLoad>,
|
||
) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Adding a customized credential load for service.</p>
|
||
<p>If customized_credential_load has been set, we will ignore all other
|
||
credential load methods.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.http_client" class="method"><h4 class="code-header">pub fn <a href="#method.http_client" class="fn">http_client</a>(self, client: <a class="struct" href="../struct.HttpClient.html" title="struct object_store::HttpClient">HttpClient</a>) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 0.53.0: Use <code>Operator::update_http_client</code> instead</span></div></span></summary><div class="docblock"><p>Specify the http client that used by this service.</p>
|
||
<h5 id="notes"><a class="doc-anchor" href="#notes">§</a>Notes</h5>
|
||
<p>This API is part of OpenDAL’s Raw API. <code>HttpClient</code> could be changed
|
||
during minor updates.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.enable_versioning" class="method"><h4 class="code-header">pub fn <a href="#method.enable_versioning" class="fn">enable_versioning</a>(self, enabled: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Set bucket versioning status for this backend</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.batch_max_operations" class="method"><h4 class="code-header">pub fn <a href="#method.batch_max_operations" class="fn">batch_max_operations</a>(self, batch_max_operations: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 0.52.0: Please use <code>delete_max_size</code> instead of <code>batch_max_operations</code></span></div></span></summary><div class="docblock"><p>Set maximum batch operations of this backend.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.delete_max_size" class="method"><h4 class="code-header">pub fn <a href="#method.delete_max_size" class="fn">delete_max_size</a>(self, delete_max_size: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Set maximum delete operations of this backend.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.checksum_algorithm" class="method"><h4 class="code-header">pub fn <a href="#method.checksum_algorithm" class="fn">checksum_algorithm</a>(self, checksum_algorithm: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Set checksum algorithm of this backend.
|
||
This is necessary when writing to AWS S3 Buckets with Object Lock enabled for example.</p>
|
||
<p>Available options:</p>
|
||
<ul>
|
||
<li>“crc32c”</li>
|
||
</ul>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.disable_write_with_if_match" class="method"><h4 class="code-header">pub fn <a href="#method.disable_write_with_if_match" class="fn">disable_write_with_if_match</a>(self) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Disable write with if match so that opendal will not send write request with if match headers.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.enable_write_with_append" class="method"><h4 class="code-header">pub fn <a href="#method.enable_write_with_append" class="fn">enable_write_with_append</a>(self) -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class="docblock"><p>Enable write with append so that opendal will send write request with append headers.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.detect_region" class="method"><h4 class="code-header">pub async fn <a href="#method.detect_region" class="fn">detect_region</a>(endpoint: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>, bucket: &<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>></h4></section></summary><div class="docblock"><p>Detect region of S3 bucket.</p>
|
||
<h5 id="args-2"><a class="doc-anchor" href="#args-2">§</a>Args</h5>
|
||
<ul>
|
||
<li>endpoint: the endpoint of S3 service</li>
|
||
<li>bucket: the bucket of S3 service</li>
|
||
</ul>
|
||
<h5 id="return"><a class="doc-anchor" href="#return">§</a>Return</h5>
|
||
<ul>
|
||
<li><code>Some(region)</code> means we detect the region successfully</li>
|
||
<li><code>None</code> means we can’t detect the region or meeting errors.</li>
|
||
</ul>
|
||
<h5 id="notes-1"><a class="doc-anchor" href="#notes-1">§</a>Notes</h5>
|
||
<p>We will try to detect region by the following methods.</p>
|
||
<ul>
|
||
<li>Match endpoint with given rules to get region
|
||
<ul>
|
||
<li>Cloudflare R2</li>
|
||
<li>AWS S3</li>
|
||
<li>Aliyun OSS</li>
|
||
</ul>
|
||
</li>
|
||
<li>Send a <code>HEAD</code> request to endpoint with bucket name to get <code>x-amz-bucket-region</code>.</li>
|
||
</ul>
|
||
<h5 id="examples"><a class="doc-anchor" href="#examples">§</a>Examples</h5>
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>opendal::services::S3;
|
||
|
||
<span class="kw">let </span>region: <span class="prelude-ty">Option</span><String> = S3::detect_region(<span class="string">"https://s3.amazonaws.com"</span>, <span class="string">"example"</span>).<span class="kw">await</span>;</code></pre></div><h5 id="reference"><a class="doc-anchor" href="#reference">§</a>Reference</h5>
|
||
<ul>
|
||
<li><a href="https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/API/API_HeadBucket.html">Amazon S3 HeadBucket API</a></li>
|
||
</ul>
|
||
</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder-for-S3" class="impl"><a href="#impl-Builder-for-S3" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="../trait.ObjectStoreBuilder.html" title="trait object_store::ObjectStoreBuilder">Builder</a> for <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedconstant.SCHEME" class="associatedconstant trait-impl"><a href="#associatedconstant.SCHEME" class="anchor">§</a><h4 class="code-header">const <a href="../trait.ObjectStoreBuilder.html#associatedconstant.SCHEME" class="constant">SCHEME</a>: <a class="enum" href="../enum.Scheme.html" title="enum object_store::Scheme">Scheme</a> = Scheme::S3</h4></section></summary><div class='docblock'>Associated scheme for this builder. It indicates what underlying service is.</div></details><details class="toggle" open><summary><section id="associatedtype.Config" class="associatedtype trait-impl"><a href="#associatedtype.Config" class="anchor">§</a><h4 class="code-header">type <a href="../trait.ObjectStoreBuilder.html#associatedtype.Config" class="associatedtype">Config</a> = <a class="struct" href="struct.S3Config.html" title="struct object_store::services::S3Config">S3Config</a></h4></section></summary><div class='docblock'>Associated configuration for this builder.</div></details><details class="toggle method-toggle" open><summary><section id="method.build" class="method trait-impl"><a href="#method.build" class="anchor">§</a><h4 class="code-header">fn <a href="../trait.ObjectStoreBuilder.html#tymethod.build" class="fn">build</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><impl <a class="trait" href="../trait.Access.html" title="trait object_store::Access">Access</a>, <a class="struct" href="../struct.Error.html" title="struct object_store::Error">Error</a>></h4></section></summary><div class='docblock'>Consume the accessor builder to build a service.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-S3" class="impl"><a href="#impl-Debug-for-S3" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Default-for-S3" class="impl"><a href="#impl-Default-for-S3" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.default" class="method trait-impl"><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -> <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-From%3C%26S3Connection%3E-for-S3" class="impl"><a class="src rightside" href="../../src/object_store/config.rs.html#127-153">Source</a><a href="#impl-From%3C%26S3Connection%3E-for-S3" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><&<a class="struct" href="../config/struct.S3Connection.html" title="struct object_store::config::S3Connection">S3Connection</a>> for <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="../../src/object_store/config.rs.html#128-152">Source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(connection: &<a class="struct" href="../config/struct.S3Connection.html" title="struct object_store::config::S3Connection">S3Connection</a>) -> Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-S3" class="impl"><a href="#impl-Freeze-for-S3" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h3></section><section id="impl-RefUnwindSafe-for-S3" class="impl"><a href="#impl-RefUnwindSafe-for-S3" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h3></section><section id="impl-Send-for-S3" class="impl"><a href="#impl-Send-for-S3" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h3></section><section id="impl-Sync-for-S3" class="impl"><a href="#impl-Sync-for-S3" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h3></section><section id="impl-Unpin-for-S3" class="impl"><a href="#impl-Unpin-for-S3" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h3></section><section id="impl-UnwindSafe-for-S3" class="impl"><a href="#impl-UnwindSafe-for-S3" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.S3.html" title="struct object_store::services::S3">S3Builder</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#138">Source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
|
||
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#139">Source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#212">Source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<div class="where">where
|
||
T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#214">Source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">Source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<div class="where">where
|
||
T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#222">Source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Conv-for-T" class="impl"><a href="#impl-Conv-for-T" class="anchor">§</a><h3 class="code-header">impl<T> Conv for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.conv" class="method trait-impl"><a href="#method.conv" class="anchor">§</a><h4 class="code-header">fn <a class="fn">conv</a><T>(self) -> T<div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into <code>T</code> using <code>Into<T></code>. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-FmtForward-for-T" class="impl"><a href="#impl-FmtForward-for-T" class="anchor">§</a><h3 class="code-header">impl<T> FmtForward for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt_binary" class="method trait-impl"><a href="#method.fmt_binary" class="anchor">§</a><h4 class="code-header">fn <a class="fn">fmt_binary</a>(self) -> FmtBinary<Self><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Binary.html" title="trait core::fmt::Binary">Binary</a>,</div></h4></section></summary><div class='docblock'>Causes <code>self</code> to use its <code>Binary</code> implementation when <code>Debug</code>-formatted.</div></details><details class="toggle method-toggle" open><summary><section id="method.fmt_display" class="method trait-impl"><a href="#method.fmt_display" class="anchor">§</a><h4 class="code-header">fn <a class="fn">fmt_display</a>(self) -> FmtDisplay<Self><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a>,</div></h4></section></summary><div class='docblock'>Causes <code>self</code> to use its <code>Display</code> implementation when
|
||
<code>Debug</code>-formatted.</div></details><details class="toggle method-toggle" open><summary><section id="method.fmt_lower_exp" class="method trait-impl"><a href="#method.fmt_lower_exp" class="anchor">§</a><h4 class="code-header">fn <a class="fn">fmt_lower_exp</a>(self) -> FmtLowerExp<Self><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.LowerExp.html" title="trait core::fmt::LowerExp">LowerExp</a>,</div></h4></section></summary><div class='docblock'>Causes <code>self</code> to use its <code>LowerExp</code> implementation when
|
||
<code>Debug</code>-formatted.</div></details><details class="toggle method-toggle" open><summary><section id="method.fmt_lower_hex" class="method trait-impl"><a href="#method.fmt_lower_hex" class="anchor">§</a><h4 class="code-header">fn <a class="fn">fmt_lower_hex</a>(self) -> FmtLowerHex<Self><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.LowerHex.html" title="trait core::fmt::LowerHex">LowerHex</a>,</div></h4></section></summary><div class='docblock'>Causes <code>self</code> to use its <code>LowerHex</code> implementation when
|
||
<code>Debug</code>-formatted.</div></details><details class="toggle method-toggle" open><summary><section id="method.fmt_octal" class="method trait-impl"><a href="#method.fmt_octal" class="anchor">§</a><h4 class="code-header">fn <a class="fn">fmt_octal</a>(self) -> FmtOctal<Self><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Octal.html" title="trait core::fmt::Octal">Octal</a>,</div></h4></section></summary><div class='docblock'>Causes <code>self</code> to use its <code>Octal</code> implementation when <code>Debug</code>-formatted.</div></details><details class="toggle method-toggle" open><summary><section id="method.fmt_pointer" class="method trait-impl"><a href="#method.fmt_pointer" class="anchor">§</a><h4 class="code-header">fn <a class="fn">fmt_pointer</a>(self) -> FmtPointer<Self><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Pointer.html" title="trait core::fmt::Pointer">Pointer</a>,</div></h4></section></summary><div class='docblock'>Causes <code>self</code> to use its <code>Pointer</code> implementation when
|
||
<code>Debug</code>-formatted.</div></details><details class="toggle method-toggle" open><summary><section id="method.fmt_upper_exp" class="method trait-impl"><a href="#method.fmt_upper_exp" class="anchor">§</a><h4 class="code-header">fn <a class="fn">fmt_upper_exp</a>(self) -> FmtUpperExp<Self><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.UpperExp.html" title="trait core::fmt::UpperExp">UpperExp</a>,</div></h4></section></summary><div class='docblock'>Causes <code>self</code> to use its <code>UpperExp</code> implementation when
|
||
<code>Debug</code>-formatted.</div></details><details class="toggle method-toggle" open><summary><section id="method.fmt_upper_hex" class="method trait-impl"><a href="#method.fmt_upper_hex" class="anchor">§</a><h4 class="code-header">fn <a class="fn">fmt_upper_hex</a>(self) -> FmtUpperHex<Self><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.UpperHex.html" title="trait core::fmt::UpperHex">UpperHex</a>,</div></h4></section></summary><div class='docblock'>Causes <code>self</code> to use its <code>UpperHex</code> implementation when
|
||
<code>Debug</code>-formatted.</div></details><details class="toggle method-toggle" open><summary><section id="method.fmt_list" class="method trait-impl"><a href="#method.fmt_list" class="anchor">§</a><h4 class="code-header">fn <a class="fn">fmt_list</a>(self) -> FmtList<Self><div class="where">where
|
||
&'a Self: for<'a> <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,</div></h4></section></summary><div class='docblock'>Formats each item in a sequence. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#785">Source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#788">Source</a><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
|
||
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-FutureExt-for-T" class="impl"><a href="#impl-FutureExt-for-T" class="anchor">§</a><h3 class="code-header">impl<T> FutureExt for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.with_context" class="method trait-impl"><a href="#method.with_context" class="anchor">§</a><h4 class="code-header">fn <a class="fn">with_context</a>(self, otel_cx: Context) -> WithContext<Self></h4></section></summary><div class='docblock'>Attaches the provided <a href="Context"><code>Context</code></a> to this type, returning a <code>WithContext</code>
|
||
wrapper. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.with_current_context" class="method trait-impl"><a href="#method.with_current_context" class="anchor">§</a><h4 class="code-header">fn <a class="fn">with_current_context</a>(self) -> WithContext<Self></h4></section></summary><div class='docblock'>Attaches the current <a href="Context"><code>Context</code></a> to this type, returning a <code>WithContext</code>
|
||
wrapper. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Instrument-for-T" class="impl"><a href="#impl-Instrument-for-T" class="anchor">§</a><h3 class="code-header">impl<T> Instrument for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.instrument" class="method trait-impl"><a href="#method.instrument" class="anchor">§</a><h4 class="code-header">fn <a class="fn">instrument</a>(self, span: Span) -> Instrumented<Self></h4></section></summary><div class='docblock'>Instruments this type with the provided [<code>Span</code>], returning an
|
||
<code>Instrumented</code> wrapper. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.in_current_span" class="method trait-impl"><a href="#method.in_current_span" class="anchor">§</a><h4 class="code-header">fn <a class="fn">in_current_span</a>(self) -> Instrumented<Self></h4></section></summary><div class='docblock'>Instruments this type with the <a href="super::Span::current()">current</a> <a href="crate::Span"><code>Span</code></a>, returning an
|
||
<code>Instrumented</code> wrapper. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#767-769">Source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<div class="where">where
|
||
U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#777">Source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
|
||
<p>That is, this conversion is whatever the implementation of
|
||
<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for U</code> chooses to do.</p>
|
||
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-IntoRequest%3CT%3E-for-T" class="impl"><a href="#impl-IntoRequest%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl<T> IntoRequest<T> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_request" class="method trait-impl"><a href="#method.into_request" class="anchor">§</a><h4 class="code-header">fn <a class="fn">into_request</a>(self) -> Request<T></h4></section></summary><div class='docblock'>Wrap the input message <code>T</code> in a <code>tonic::Request</code></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-LayerExt%3CL%3E-for-L" class="impl"><a href="#impl-LayerExt%3CL%3E-for-L" class="anchor">§</a><h3 class="code-header">impl<L> LayerExt<L> for L</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.named_layer" class="method trait-impl"><a href="#method.named_layer" class="anchor">§</a><h4 class="code-header">fn <a class="fn">named_layer</a><S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S><div class="where">where
|
||
L: Layer<S>,</div></h4></section></summary><div class='docblock'>Applies the layer to a service and wraps it in [<code>Layered</code>].</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Pipe-for-T" class="impl"><a href="#impl-Pipe-for-T" class="anchor">§</a><h3 class="code-header">impl<T> Pipe for T<div class="where">where
|
||
T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.pipe" class="method trait-impl"><a href="#method.pipe" class="anchor">§</a><h4 class="code-header">fn <a class="fn">pipe</a><R>(self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(Self) -> R) -> R<div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Pipes by value. This is generally the method you want to use. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.pipe_ref" class="method trait-impl"><a href="#method.pipe_ref" class="anchor">§</a><h4 class="code-header">fn <a class="fn">pipe_ref</a><'a, R>(&'a self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(&'a Self) -> R) -> R<div class="where">where
|
||
R: 'a,</div></h4></section></summary><div class='docblock'>Borrows <code>self</code> and passes that borrow into the pipe function. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.pipe_ref_mut" class="method trait-impl"><a href="#method.pipe_ref_mut" class="anchor">§</a><h4 class="code-header">fn <a class="fn">pipe_ref_mut</a><'a, R>(&'a mut self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(&'a mut Self) -> R) -> R<div class="where">where
|
||
R: 'a,</div></h4></section></summary><div class='docblock'>Mutably borrows <code>self</code> and passes that borrow into the pipe function. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.pipe_borrow" class="method trait-impl"><a href="#method.pipe_borrow" class="anchor">§</a><h4 class="code-header">fn <a class="fn">pipe_borrow</a><'a, B, R>(&'a self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a B</a>) -> R) -> R<div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><B>,
|
||
B: 'a + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
|
||
R: 'a,</div></h4></section></summary><div class='docblock'>Borrows <code>self</code>, then passes <code>self.borrow()</code> into the pipe function. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.pipe_borrow_mut" class="method trait-impl"><a href="#method.pipe_borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a class="fn">pipe_borrow_mut</a><'a, B, R>(
|
||
&'a mut self,
|
||
func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut B</a>) -> R,
|
||
) -> R<div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><B>,
|
||
B: 'a + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
|
||
R: 'a,</div></h4></section></summary><div class='docblock'>Mutably borrows <code>self</code>, then passes <code>self.borrow_mut()</code> into the pipe
|
||
function. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.pipe_as_ref" class="method trait-impl"><a href="#method.pipe_as_ref" class="anchor">§</a><h4 class="code-header">fn <a class="fn">pipe_as_ref</a><'a, U, R>(&'a self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a U</a>) -> R) -> R<div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a><U>,
|
||
U: 'a + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
|
||
R: 'a,</div></h4></section></summary><div class='docblock'>Borrows <code>self</code>, then passes <code>self.as_ref()</code> into the pipe function.</div></details><details class="toggle method-toggle" open><summary><section id="method.pipe_as_mut" class="method trait-impl"><a href="#method.pipe_as_mut" class="anchor">§</a><h4 class="code-header">fn <a class="fn">pipe_as_mut</a><'a, U, R>(&'a mut self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut U</a>) -> R) -> R<div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsMut.html" title="trait core::convert::AsMut">AsMut</a><U>,
|
||
U: 'a + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
|
||
R: 'a,</div></h4></section></summary><div class='docblock'>Mutably borrows <code>self</code>, then passes <code>self.as_mut()</code> into the pipe
|
||
function.</div></details><details class="toggle method-toggle" open><summary><section id="method.pipe_deref" class="method trait-impl"><a href="#method.pipe_deref" class="anchor">§</a><h4 class="code-header">fn <a class="fn">pipe_deref</a><'a, T, R>(&'a self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a T</a>) -> R) -> R<div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a><Target = T>,
|
||
T: 'a + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
|
||
R: 'a,</div></h4></section></summary><div class='docblock'>Borrows <code>self</code>, then passes <code>self.deref()</code> into the pipe function.</div></details><details class="toggle method-toggle" open><summary><section id="method.pipe_deref_mut" class="method trait-impl"><a href="#method.pipe_deref_mut" class="anchor">§</a><h4 class="code-header">fn <a class="fn">pipe_deref_mut</a><'a, T, R>(
|
||
&'a mut self,
|
||
func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&'a mut T</a>) -> R,
|
||
) -> R<div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.DerefMut.html" title="trait core::ops::deref::DerefMut">DerefMut</a><Target = T> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a>,
|
||
T: 'a + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
|
||
R: 'a,</div></h4></section></summary><div class='docblock'>Mutably borrows <code>self</code>, then passes <code>self.deref_mut()</code> into the pipe
|
||
function.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-PolicyExt-for-T" class="impl"><a href="#impl-PolicyExt-for-T" class="anchor">§</a><h3 class="code-header">impl<T> PolicyExt for T<div class="where">where
|
||
T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.and" class="method trait-impl"><a href="#method.and" class="anchor">§</a><h4 class="code-header">fn <a class="fn">and</a><P, B, E>(self, other: P) -> And<T, P><div class="where">where
|
||
T: Policy<B, E>,
|
||
P: Policy<B, E>,</div></h4></section></summary><div class='docblock'>Create a new <code>Policy</code> that returns [<code>Action::Follow</code>] only if <code>self</code> and <code>other</code> return
|
||
<code>Action::Follow</code>. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.or" class="method trait-impl"><a href="#method.or" class="anchor">§</a><h4 class="code-header">fn <a class="fn">or</a><P, B, E>(self, other: P) -> Or<T, P><div class="where">where
|
||
T: Policy<B, E>,
|
||
P: Policy<B, E>,</div></h4></section></summary><div class='docblock'>Create a new <code>Policy</code> that returns [<code>Action::Follow</code>] if either <code>self</code> or <code>other</code> returns
|
||
<code>Action::Follow</code>. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Same-for-T" class="impl"><a class="src rightside" href="https://docs.rs/typenum/1.18.0/src/typenum/type_operators.rs.html#34">Source</a><a href="#impl-Same-for-T" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://docs.rs/typenum/1.18.0/typenum/type_operators/trait.Same.html" title="trait typenum::type_operators::Same">Same</a> for T</h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Output" class="associatedtype trait-impl"><a class="src rightside" href="https://docs.rs/typenum/1.18.0/src/typenum/type_operators.rs.html#35">Source</a><a href="#associatedtype.Output" class="anchor">§</a><h4 class="code-header">type <a href="https://docs.rs/typenum/1.18.0/typenum/type_operators/trait.Same.html#associatedtype.Output" class="associatedtype">Output</a> = T</h4></section></summary><div class='docblock'>Should always be <code>Self</code></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ServiceExt-for-T" class="impl"><a href="#impl-ServiceExt-for-T" class="anchor">§</a><h3 class="code-header">impl<T> ServiceExt for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.propagate_header" class="method trait-impl"><a href="#method.propagate_header" class="anchor">§</a><h4 class="code-header">fn <a class="fn">propagate_header</a>(self, header: HeaderName) -> PropagateHeader<Self><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Propagate a header from the request to the response. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.add_extension" class="method trait-impl"><a href="#method.add_extension" class="anchor">§</a><h4 class="code-header">fn <a class="fn">add_extension</a><T>(self, value: T) -> AddExtension<Self, T><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Add some shareable value to <a href="https://docs.rs/http/latest/http/struct.Extensions.html">request extensions</a>. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.map_request_body" class="method trait-impl"><a href="#method.map_request_body" class="anchor">§</a><h4 class="code-header">fn <a class="fn">map_request_body</a><F>(self, f: F) -> MapRequestBody<Self, F><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Apply a transformation to the request body. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.map_response_body" class="method trait-impl"><a href="#method.map_response_body" class="anchor">§</a><h4 class="code-header">fn <a class="fn">map_response_body</a><F>(self, f: F) -> MapResponseBody<Self, F><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Apply a transformation to the response body. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.compression" class="method trait-impl"><a href="#method.compression" class="anchor">§</a><h4 class="code-header">fn <a class="fn">compression</a>(self) -> Compression<Self><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Compresses response bodies. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.decompression" class="method trait-impl"><a href="#method.decompression" class="anchor">§</a><h4 class="code-header">fn <a class="fn">decompression</a>(self) -> Decompression<Self><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Decompress response bodies. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.trace_for_http" class="method trait-impl"><a href="#method.trace_for_http" class="anchor">§</a><h4 class="code-header">fn <a class="fn">trace_for_http</a>(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>High level tracing that classifies responses using HTTP status codes. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.trace_for_grpc" class="method trait-impl"><a href="#method.trace_for_grpc" class="anchor">§</a><h4 class="code-header">fn <a class="fn">trace_for_grpc</a>(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>High level tracing that classifies responses using gRPC headers. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.follow_redirects" class="method trait-impl"><a href="#method.follow_redirects" class="anchor">§</a><h4 class="code-header">fn <a class="fn">follow_redirects</a>(self) -> FollowRedirect<Self><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Follow redirect resposes using the <a href="crate::follow_redirect::policy::Standard"><code>Standard</code></a> policy. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.sensitive_headers" class="method trait-impl"><a href="#method.sensitive_headers" class="anchor">§</a><h4 class="code-header">fn <a class="fn">sensitive_headers</a>(
|
||
self,
|
||
headers: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a><Item = HeaderName>,
|
||
) -> SetSensitiveRequestHeaders<SetSensitiveResponseHeaders<Self>><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Mark headers as <a href="https://docs.rs/http/latest/http/header/struct.HeaderValue.html#method.set_sensitive">sensitive</a> on both requests and responses. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.sensitive_request_headers" class="method trait-impl"><a href="#method.sensitive_request_headers" class="anchor">§</a><h4 class="code-header">fn <a class="fn">sensitive_request_headers</a>(
|
||
self,
|
||
headers: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a><Item = HeaderName>,
|
||
) -> SetSensitiveRequestHeaders<Self><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Mark headers as <a href="https://docs.rs/http/latest/http/header/struct.HeaderValue.html#method.set_sensitive">sensitive</a> on requests. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.sensitive_response_headers" class="method trait-impl"><a href="#method.sensitive_response_headers" class="anchor">§</a><h4 class="code-header">fn <a class="fn">sensitive_response_headers</a>(
|
||
self,
|
||
headers: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a><Item = HeaderName>,
|
||
) -> SetSensitiveResponseHeaders<Self><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Mark headers as <a href="https://docs.rs/http/latest/http/header/struct.HeaderValue.html#method.set_sensitive">sensitive</a> on responses. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.override_request_header" class="method trait-impl"><a href="#method.override_request_header" class="anchor">§</a><h4 class="code-header">fn <a class="fn">override_request_header</a><M>(
|
||
self,
|
||
header_name: HeaderName,
|
||
make: M,
|
||
) -> SetRequestHeader<Self, M><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Insert a header into the request. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.append_request_header" class="method trait-impl"><a href="#method.append_request_header" class="anchor">§</a><h4 class="code-header">fn <a class="fn">append_request_header</a><M>(
|
||
self,
|
||
header_name: HeaderName,
|
||
make: M,
|
||
) -> SetRequestHeader<Self, M><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Append a header into the request. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.insert_request_header_if_not_present" class="method trait-impl"><a href="#method.insert_request_header_if_not_present" class="anchor">§</a><h4 class="code-header">fn <a class="fn">insert_request_header_if_not_present</a><M>(
|
||
self,
|
||
header_name: HeaderName,
|
||
make: M,
|
||
) -> SetRequestHeader<Self, M><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Insert a header into the request, if the header is not already present. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.override_response_header" class="method trait-impl"><a href="#method.override_response_header" class="anchor">§</a><h4 class="code-header">fn <a class="fn">override_response_header</a><M>(
|
||
self,
|
||
header_name: HeaderName,
|
||
make: M,
|
||
) -> SetResponseHeader<Self, M><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Insert a header into the response. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.append_response_header" class="method trait-impl"><a href="#method.append_response_header" class="anchor">§</a><h4 class="code-header">fn <a class="fn">append_response_header</a><M>(
|
||
self,
|
||
header_name: HeaderName,
|
||
make: M,
|
||
) -> SetResponseHeader<Self, M><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Append a header into the response. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.insert_response_header_if_not_present" class="method trait-impl"><a href="#method.insert_response_header_if_not_present" class="anchor">§</a><h4 class="code-header">fn <a class="fn">insert_response_header_if_not_present</a><M>(
|
||
self,
|
||
header_name: HeaderName,
|
||
make: M,
|
||
) -> SetResponseHeader<Self, M><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Insert a header into the response, if the header is not already present. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.set_request_id" class="method trait-impl"><a href="#method.set_request_id" class="anchor">§</a><h4 class="code-header">fn <a class="fn">set_request_id</a><M>(
|
||
self,
|
||
header_name: HeaderName,
|
||
make_request_id: M,
|
||
) -> SetRequestId<Self, M><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
|
||
M: MakeRequestId,</div></h4></section></summary><div class='docblock'>Add request id header and extension. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.set_x_request_id" class="method trait-impl"><a href="#method.set_x_request_id" class="anchor">§</a><h4 class="code-header">fn <a class="fn">set_x_request_id</a><M>(self, make_request_id: M) -> SetRequestId<Self, M><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
|
||
M: MakeRequestId,</div></h4></section></summary><div class='docblock'>Add request id header and extension, using <code>x-request-id</code> as the header name. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.propagate_request_id" class="method trait-impl"><a href="#method.propagate_request_id" class="anchor">§</a><h4 class="code-header">fn <a class="fn">propagate_request_id</a>(
|
||
self,
|
||
header_name: HeaderName,
|
||
) -> PropagateRequestId<Self><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Propgate request ids from requests to responses. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.propagate_x_request_id" class="method trait-impl"><a href="#method.propagate_x_request_id" class="anchor">§</a><h4 class="code-header">fn <a class="fn">propagate_x_request_id</a>(self) -> PropagateRequestId<Self><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Propgate request ids from requests to responses, using <code>x-request-id</code> as the header name. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.catch_panic" class="method trait-impl"><a href="#method.catch_panic" class="anchor">§</a><h4 class="code-header">fn <a class="fn">catch_panic</a>(self) -> CatchPanic<Self, DefaultResponseForPanic><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Catch panics and convert them into <code>500 Internal Server</code> responses. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.request_body_limit" class="method trait-impl"><a href="#method.request_body_limit" class="anchor">§</a><h4 class="code-header">fn <a class="fn">request_body_limit</a>(self, limit: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -> RequestBodyLimit<Self><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Intercept requests with over-sized payloads and convert them into
|
||
<code>413 Payload Too Large</code> responses. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.trim_trailing_slash" class="method trait-impl"><a href="#method.trim_trailing_slash" class="anchor">§</a><h4 class="code-header">fn <a class="fn">trim_trailing_slash</a>(self) -> NormalizePath<Self><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Remove trailing slashes from paths. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.append_trailing_slash" class="method trait-impl"><a href="#method.append_trailing_slash" class="anchor">§</a><h4 class="code-header">fn <a class="fn">append_trailing_slash</a>(self) -> NormalizePath<Self><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Append trailing slash to paths. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Tap-for-T" class="impl"><a href="#impl-Tap-for-T" class="anchor">§</a><h3 class="code-header">impl<T> Tap for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.tap" class="method trait-impl"><a href="#method.tap" class="anchor">§</a><h4 class="code-header">fn <a class="fn">tap</a>(self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(&Self)) -> Self</h4></section></summary><div class='docblock'>Immutable access to a value. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.tap_mut" class="method trait-impl"><a href="#method.tap_mut" class="anchor">§</a><h4 class="code-header">fn <a class="fn">tap_mut</a>(self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(&mut Self)) -> Self</h4></section></summary><div class='docblock'>Mutable access to a value. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.tap_borrow" class="method trait-impl"><a href="#method.tap_borrow" class="anchor">§</a><h4 class="code-header">fn <a class="fn">tap_borrow</a><B>(self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&B</a>)) -> Self<div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><B>,
|
||
B: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Immutable access to the <code>Borrow<B></code> of a value. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.tap_borrow_mut" class="method trait-impl"><a href="#method.tap_borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a class="fn">tap_borrow_mut</a><B>(self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut B</a>)) -> Self<div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><B>,
|
||
B: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Mutable access to the <code>BorrowMut<B></code> of a value. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.tap_ref" class="method trait-impl"><a href="#method.tap_ref" class="anchor">§</a><h4 class="code-header">fn <a class="fn">tap_ref</a><R>(self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&R</a>)) -> Self<div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a><R>,
|
||
R: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Immutable access to the <code>AsRef<R></code> view of a value. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.tap_ref_mut" class="method trait-impl"><a href="#method.tap_ref_mut" class="anchor">§</a><h4 class="code-header">fn <a class="fn">tap_ref_mut</a><R>(self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut R</a>)) -> Self<div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsMut.html" title="trait core::convert::AsMut">AsMut</a><R>,
|
||
R: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Mutable access to the <code>AsMut<R></code> view of a value. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.tap_deref" class="method trait-impl"><a href="#method.tap_deref" class="anchor">§</a><h4 class="code-header">fn <a class="fn">tap_deref</a><T>(self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&T</a>)) -> Self<div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a><Target = T>,
|
||
T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Immutable access to the <code>Deref::Target</code> of a value. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.tap_deref_mut" class="method trait-impl"><a href="#method.tap_deref_mut" class="anchor">§</a><h4 class="code-header">fn <a class="fn">tap_deref_mut</a><T>(self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut T</a>)) -> Self<div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.DerefMut.html" title="trait core::ops::deref::DerefMut">DerefMut</a><Target = T> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a>,
|
||
T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Mutable access to the <code>Deref::Target</code> of a value. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.tap_dbg" class="method trait-impl"><a href="#method.tap_dbg" class="anchor">§</a><h4 class="code-header">fn <a class="fn">tap_dbg</a>(self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(&Self)) -> Self</h4></section></summary><div class='docblock'>Calls <code>.tap()</code> only in debug builds, and is erased in release builds.</div></details><details class="toggle method-toggle" open><summary><section id="method.tap_mut_dbg" class="method trait-impl"><a href="#method.tap_mut_dbg" class="anchor">§</a><h4 class="code-header">fn <a class="fn">tap_mut_dbg</a>(self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(&mut Self)) -> Self</h4></section></summary><div class='docblock'>Calls <code>.tap_mut()</code> only in debug builds, and is erased in release
|
||
builds.</div></details><details class="toggle method-toggle" open><summary><section id="method.tap_borrow_dbg" class="method trait-impl"><a href="#method.tap_borrow_dbg" class="anchor">§</a><h4 class="code-header">fn <a class="fn">tap_borrow_dbg</a><B>(self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&B</a>)) -> Self<div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><B>,
|
||
B: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Calls <code>.tap_borrow()</code> only in debug builds, and is erased in release
|
||
builds.</div></details><details class="toggle method-toggle" open><summary><section id="method.tap_borrow_mut_dbg" class="method trait-impl"><a href="#method.tap_borrow_mut_dbg" class="anchor">§</a><h4 class="code-header">fn <a class="fn">tap_borrow_mut_dbg</a><B>(self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut B</a>)) -> Self<div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><B>,
|
||
B: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Calls <code>.tap_borrow_mut()</code> only in debug builds, and is erased in release
|
||
builds.</div></details><details class="toggle method-toggle" open><summary><section id="method.tap_ref_dbg" class="method trait-impl"><a href="#method.tap_ref_dbg" class="anchor">§</a><h4 class="code-header">fn <a class="fn">tap_ref_dbg</a><R>(self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&R</a>)) -> Self<div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a><R>,
|
||
R: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Calls <code>.tap_ref()</code> only in debug builds, and is erased in release
|
||
builds.</div></details><details class="toggle method-toggle" open><summary><section id="method.tap_ref_mut_dbg" class="method trait-impl"><a href="#method.tap_ref_mut_dbg" class="anchor">§</a><h4 class="code-header">fn <a class="fn">tap_ref_mut_dbg</a><R>(self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut R</a>)) -> Self<div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsMut.html" title="trait core::convert::AsMut">AsMut</a><R>,
|
||
R: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Calls <code>.tap_ref_mut()</code> only in debug builds, and is erased in release
|
||
builds.</div></details><details class="toggle method-toggle" open><summary><section id="method.tap_deref_dbg" class="method trait-impl"><a href="#method.tap_deref_dbg" class="anchor">§</a><h4 class="code-header">fn <a class="fn">tap_deref_dbg</a><T>(self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&T</a>)) -> Self<div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a><Target = T>,
|
||
T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Calls <code>.tap_deref()</code> only in debug builds, and is erased in release
|
||
builds.</div></details><details class="toggle method-toggle" open><summary><section id="method.tap_deref_mut_dbg" class="method trait-impl"><a href="#method.tap_deref_mut_dbg" class="anchor">§</a><h4 class="code-header">fn <a class="fn">tap_deref_mut_dbg</a><T>(self, func: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut T</a>)) -> Self<div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.DerefMut.html" title="trait core::ops::deref::DerefMut">DerefMut</a><Target = T> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a>,
|
||
T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Calls <code>.tap_deref_mut()</code> only in debug builds, and is erased in release
|
||
builds.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryConv-for-T" class="impl"><a href="#impl-TryConv-for-T" class="anchor">§</a><h3 class="code-header">impl<T> TryConv for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.try_conv" class="method trait-impl"><a href="#method.try_conv" class="anchor">§</a><h4 class="code-header">fn <a class="fn">try_conv</a><T>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" title="type core::convert::TryInto::Error">Error</a>><div class="where">where
|
||
Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><T>,</div></h4></section></summary><div class='docblock'>Attempts to convert <code>self</code> into <code>T</code> using <code>TryInto<T></code>. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#827-829">Source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<div class="where">where
|
||
U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#831">Source</a><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#834">Source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#811-813">Source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<div class="where">where
|
||
U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#815">Source</a><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#818">Source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-T" class="impl"><a href="#impl-VZip%3CV%3E-for-T" class="anchor">§</a><h3 class="code-header">impl<V, T> VZip<V> for T<div class="where">where
|
||
V: MultiLane<T>,</div></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -> V</h4></section></div></details><details class="toggle implementors-toggle"><summary><section id="impl-WithSubscriber-for-T" class="impl"><a href="#impl-WithSubscriber-for-T" class="anchor">§</a><h3 class="code-header">impl<T> WithSubscriber for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.with_subscriber" class="method trait-impl"><a href="#method.with_subscriber" class="anchor">§</a><h4 class="code-header">fn <a class="fn">with_subscriber</a><S>(self, subscriber: S) -> WithDispatch<Self><div class="where">where
|
||
S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><Dispatch>,</div></h4></section></summary><div class='docblock'>Attaches the provided <a href="super::Subscriber"><code>Subscriber</code></a> to this type, returning a
|
||
[<code>WithDispatch</code>] wrapper. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.with_current_subscriber" class="method trait-impl"><a href="#method.with_current_subscriber" class="anchor">§</a><h4 class="code-header">fn <a class="fn">with_current_subscriber</a>(self) -> WithDispatch<Self></h4></section></summary><div class='docblock'>Attaches the current <a href="crate::dispatcher#setting-the-default-subscriber">default</a> <a href="super::Subscriber"><code>Subscriber</code></a> to this type, returning a
|
||
[<code>WithDispatch</code>] wrapper. <a>Read more</a></div></details></div></details><section id="impl-Any-for-T-1" class="impl"><a href="#impl-Any-for-T-1" class="anchor">§</a><h3 class="code-header">impl<T> Any for T<div class="where">where
|
||
T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a>,</div></h3></section><section id="impl-ErasedDestructor-for-T" class="impl"><a href="#impl-ErasedDestructor-for-T" class="anchor">§</a><h3 class="code-header">impl<T> ErasedDestructor for T<div class="where">where
|
||
T: 'static,</div></h3></section><section id="impl-MaybeSend-for-T" class="impl"><a href="#impl-MaybeSend-for-T" class="anchor">§</a><h3 class="code-header">impl<T> MaybeSend for T<div class="where">where
|
||
T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</div></h3></section></div></section></div></main></body></html> |