blob: edec736e72bc675e5a263698fbb5ff8c4bb1c0da [file] [log] [blame]
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="The error type for I/O operations of the `Read`, `Write`, `Seek`, and associated traits."><meta name="keywords" content="rust, rustlang, rust-lang, Error"><title>Error in futures::io - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" href="../../normalize.css"><link rel="stylesheet" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" href="../../ayu.css" disabled><link rel="stylesheet" href="../../dark.css" disabled><link rel="stylesheet" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../main.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.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]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button><a class="sidebar-logo" href="../../futures/index.html"><div class="logo-container"><img class="rust-logo" src="../../rust-logo.svg" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../futures/index.html"><div class="logo-container"><img class="rust-logo" src="../../rust-logo.svg" alt="logo"></div></a><h2 class="location"><a href="#">Error</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.downcast">downcast</a></li><li><a href="#method.from_raw_os_error">from_raw_os_error</a></li><li><a href="#method.get_mut">get_mut</a></li><li><a href="#method.get_ref">get_ref</a></li><li><a href="#method.into_inner">into_inner</a></li><li><a href="#method.kind">kind</a></li><li><a href="#method.last_os_error">last_os_error</a></li><li><a href="#method.new">new</a></li><li><a href="#method.other">other</a></li><li><a href="#method.raw_os_error">raw_os_error</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Debug-for-Error">Debug</a></li><li><a href="#impl-Display-for-Error">Display</a></li><li><a href="#impl-Error-for-Error">Error</a></li><li><a href="#impl-From%3CErrorKind%3E-for-Error">From&lt;ErrorKind&gt;</a></li><li><a href="#impl-From%3CIntoInnerError%3CW%3E%3E-for-Error">From&lt;IntoInnerError&lt;W&gt;&gt;</a></li><li><a href="#impl-From%3CNulError%3E-for-Error">From&lt;NulError&gt;</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Error">!RefUnwindSafe</a></li><li><a href="#impl-Send-for-Error">Send</a></li><li><a href="#impl-Sync-for-Error">Sync</a></li><li><a href="#impl-Unpin-for-Error">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Error">!UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Error">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Error">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Error">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-Error">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-Error">Into&lt;U&gt;</a></li><li><a href="#impl-Provider-for-Error">Provider</a></li><li><a href="#impl-ToString-for-Error">ToString</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Error">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-Error">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In futures::io</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../index.html">futures</a>::<wbr><a href="index.html">io</a>::<wbr><a class="struct" href="#">Error</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/io/error.rs.html#68">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct Error { /* private fields */ }</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>The error type for I/O operations of the <a href="https://doc.rust-lang.org/nightly/std/io/trait.Read.html"><code>Read</code></a>, <a href="https://doc.rust-lang.org/nightly/std/io/trait.Write.html"><code>Write</code></a>, <a href="https://doc.rust-lang.org/nightly/std/io/trait.Seek.html"><code>Seek</code></a>, and
associated traits.</p>
<p>Errors mostly originate from the underlying OS, but custom instances of
<code>Error</code> can be created with crafted error messages and a particular value of
<a href="enum.ErrorKind.html" title="ErrorKind"><code>ErrorKind</code></a>.</p>
</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/std/io/error.rs.html#477">source</a><a href="#impl-Error" class="anchor"></a><h3 class="code-header">impl <a class="struct" href="struct.Error.html" title="struct futures::io::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new" class="method has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/std/io/error.rs.html#504-506">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fnname">new</a>&lt;E&gt;(kind: <a class="enum" href="enum.ErrorKind.html" title="enum futures::io::ErrorKind">ErrorKind</a>, error: E) -&gt; <a class="struct" href="struct.Error.html" title="struct futures::io::Error">Error</a><span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;E: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'static, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>&gt;&gt;,</span></h4></section></summary><div class="docblock"><p>Creates a new I/O error from a known kind of error as well as an
arbitrary error payload.</p>
<p>This function is used to generically create I/O errors which do not
originate from the OS itself. The <code>error</code> argument is an arbitrary
payload which will be contained in this <a href="struct.Error.html" title="Error"><code>Error</code></a>.</p>
<p>Note that this function allocates memory on the heap.
If no extra payload is required, use the <code>From</code> conversion from
<code>ErrorKind</code>.</p>
<h5 id="examples"><a href="#examples">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::io::{Error, ErrorKind};
<span class="comment">// errors can be created from strings
</span><span class="kw">let </span>custom_error = Error::new(ErrorKind::Other, <span class="string">&quot;oh no!&quot;</span>);
<span class="comment">// errors can also be created from other errors
</span><span class="kw">let </span>custom_error2 = Error::new(ErrorKind::Interrupted, custom_error);
<span class="comment">// creating an error without payload (and without memory allocation)
</span><span class="kw">let </span>eof_error = Error::from(ErrorKind::UnexpectedEof);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.other" class="method has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/std/io/error.rs.html#531-533">source</a><h4 class="code-header">pub fn <a href="#method.other" class="fnname">other</a>&lt;E&gt;(error: E) -&gt; <a class="struct" href="struct.Error.html" title="struct futures::io::Error">Error</a><span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;E: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'static, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>&gt;&gt;,</span></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>io_error_other</code>)</span></div></span></summary><div class="docblock"><p>Creates a new I/O error from an arbitrary error payload.</p>
<p>This function is used to generically create I/O errors which do not
originate from the OS itself. It is a shortcut for <a href="struct.Error.html#method.new" title="Error::new"><code>Error::new</code></a>
with <a href="enum.ErrorKind.html#variant.Other" title="ErrorKind::Other"><code>ErrorKind::Other</code></a>.</p>
<h5 id="examples-1"><a href="#examples-1">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attribute">#![feature(io_error_other)]
</span><span class="kw">use </span>std::io::Error;
<span class="comment">// errors can be created from strings
</span><span class="kw">let </span>custom_error = Error::other(<span class="string">&quot;oh no!&quot;</span>);
<span class="comment">// errors can also be created from other errors
</span><span class="kw">let </span>custom_error2 = Error::other(custom_error);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.last_os_error" class="method has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/std/io/error.rs.html#581">source</a><h4 class="code-header">pub fn <a href="#method.last_os_error" class="fnname">last_os_error</a>() -&gt; <a class="struct" href="struct.Error.html" title="struct futures::io::Error">Error</a></h4></section></summary><div class="docblock"><p>Returns an error representing the last OS error which occurred.</p>
<p>This function reads the value of <code>errno</code> for the target platform (e.g.
<code>GetLastError</code> on Windows) and will return a corresponding instance of
<a href="struct.Error.html" title="Error"><code>Error</code></a> for the error code.</p>
<p>This should be called immediately after a call to a platform function,
otherwise the state of the error value is indeterminate. In particular,
other standard library functions may call platform functions that may
(or may not) reset the error value even if they succeed.</p>
<h5 id="examples-2"><a href="#examples-2">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::io::Error;
<span class="kw">let </span>os_error = Error::last_os_error();
<span class="macro">println!</span>(<span class="string">&quot;last OS error: {os_error:?}&quot;</span>);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_raw_os_error" class="method has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/std/io/error.rs.html#613">source</a><h4 class="code-header">pub fn <a href="#method.from_raw_os_error" class="fnname">from_raw_os_error</a>(code: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>) -&gt; <a class="struct" href="struct.Error.html" title="struct futures::io::Error">Error</a></h4></section></summary><div class="docblock"><p>Creates a new instance of an <a href="struct.Error.html" title="Error"><code>Error</code></a> from a particular OS error code.</p>
<h5 id="examples-3"><a href="#examples-3">Examples</a></h5>
<p>On Linux:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::io;
<span class="kw">let </span>error = io::Error::from_raw_os_error(<span class="number">22</span>);
<span class="macro">assert_eq!</span>(error.kind(), io::ErrorKind::InvalidInput);</code></pre></div>
<p>On Windows:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::io;
<span class="kw">let </span>error = io::Error::from_raw_os_error(<span class="number">10022</span>);
<span class="macro">assert_eq!</span>(error.kind(), io::ErrorKind::InvalidInput);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.raw_os_error" class="method has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/std/io/error.rs.html#649">source</a><h4 class="code-header">pub fn <a href="#method.raw_os_error" class="fnname">raw_os_error</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>&gt;</h4></section></summary><div class="docblock"><p>Returns the OS error that this error represents (if any).</p>
<p>If this <a href="struct.Error.html" title="Error"><code>Error</code></a> was constructed via <a href="struct.Error.html#method.last_os_error"><code>last_os_error</code></a> or
<a href="struct.Error.html#method.from_raw_os_error"><code>from_raw_os_error</code></a>, then this function will return <a href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html#variant.Some" title="Some"><code>Some</code></a>, otherwise
it will return <a href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html#variant.None" title="None"><code>None</code></a>.</p>
<h5 id="examples-4"><a href="#examples-4">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::io::{Error, ErrorKind};
<span class="kw">fn </span>print_os_error(err: <span class="kw-2">&amp;</span>Error) {
<span class="kw">if let </span><span class="prelude-val">Some</span>(raw_os_err) = err.raw_os_error() {
<span class="macro">println!</span>(<span class="string">&quot;raw OS error: {raw_os_err:?}&quot;</span>);
} <span class="kw">else </span>{
<span class="macro">println!</span>(<span class="string">&quot;Not an OS error&quot;</span>);
}
}
<span class="kw">fn </span>main() {
<span class="comment">// Will print &quot;raw OS error: ...&quot;.
</span>print_os_error(<span class="kw-2">&amp;</span>Error::last_os_error());
<span class="comment">// Will print &quot;Not an OS error&quot;.
</span>print_os_error(<span class="kw-2">&amp;</span>Error::new(ErrorKind::Other, <span class="string">&quot;oh no!&quot;</span>));
}</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_ref" class="method has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/io/error.rs.html#688">source</a></span><h4 class="code-header">pub fn <a href="#method.get_ref" class="fnname">get_ref</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;(dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'static)&gt;</h4></section></summary><div class="docblock"><p>Returns a reference to the inner error wrapped by this error (if any).</p>
<p>If this <a href="struct.Error.html" title="Error"><code>Error</code></a> was constructed via <a href="struct.Error.html#method.new"><code>new</code></a> then this function will
return <a href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html#variant.Some" title="Some"><code>Some</code></a>, otherwise it will return <a href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html#variant.None" title="None"><code>None</code></a>.</p>
<h5 id="examples-5"><a href="#examples-5">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::io::{Error, ErrorKind};
<span class="kw">fn </span>print_error(err: <span class="kw-2">&amp;</span>Error) {
<span class="kw">if let </span><span class="prelude-val">Some</span>(inner_err) = err.get_ref() {
<span class="macro">println!</span>(<span class="string">&quot;Inner error: {inner_err:?}&quot;</span>);
} <span class="kw">else </span>{
<span class="macro">println!</span>(<span class="string">&quot;No inner error&quot;</span>);
}
}
<span class="kw">fn </span>main() {
<span class="comment">// Will print &quot;No inner error&quot;.
</span>print_error(<span class="kw-2">&amp;</span>Error::last_os_error());
<span class="comment">// Will print &quot;Inner error: ...&quot;.
</span>print_error(<span class="kw-2">&amp;</span>Error::new(ErrorKind::Other, <span class="string">&quot;oh no!&quot;</span>));
}</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_mut" class="method has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/io/error.rs.html#762">source</a></span><h4 class="code-header">pub fn <a href="#method.get_mut" class="fnname">get_mut</a>(&amp;mut self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;mut (dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'static)&gt;</h4></section></summary><div class="docblock"><p>Returns a mutable reference to the inner error wrapped by this error
(if any).</p>
<p>If this <a href="struct.Error.html" title="Error"><code>Error</code></a> was constructed via <a href="struct.Error.html#method.new"><code>new</code></a> then this function will
return <a href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html#variant.Some" title="Some"><code>Some</code></a>, otherwise it will return <a href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html#variant.None" title="None"><code>None</code></a>.</p>
<h5 id="examples-6"><a href="#examples-6">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::io::{Error, ErrorKind};
<span class="kw">use </span>std::{error, fmt};
<span class="kw">use </span>std::fmt::Display;
<span class="attribute">#[derive(Debug)]
</span><span class="kw">struct </span>MyError {
v: String,
}
<span class="kw">impl </span>MyError {
<span class="kw">fn </span>new() -&gt; MyError {
MyError {
v: <span class="string">&quot;oh no!&quot;</span>.to_string()
}
}
<span class="kw">fn </span>change_message(<span class="kw-2">&amp;mut </span><span class="self">self</span>, new_message: <span class="kw-2">&amp;</span>str) {
<span class="self">self</span>.v = new_message.to_string();
}
}
<span class="kw">impl </span>error::Error <span class="kw">for </span>MyError {}
<span class="kw">impl </span>Display <span class="kw">for </span>MyError {
<span class="kw">fn </span>fmt(<span class="kw-2">&amp;</span><span class="self">self</span>, f: <span class="kw-2">&amp;mut </span>fmt::Formatter&lt;<span class="lifetime">&#39;_</span>&gt;) -&gt; fmt::Result {
<span class="macro">write!</span>(f, <span class="string">&quot;MyError: {}&quot;</span>, <span class="kw-2">&amp;</span><span class="self">self</span>.v)
}
}
<span class="kw">fn </span>change_error(<span class="kw-2">mut </span>err: Error) -&gt; Error {
<span class="kw">if let </span><span class="prelude-val">Some</span>(inner_err) = err.get_mut() {
inner_err.downcast_mut::&lt;MyError&gt;().unwrap().change_message(<span class="string">&quot;I&#39;ve been changed!&quot;</span>);
}
err
}
<span class="kw">fn </span>print_error(err: <span class="kw-2">&amp;</span>Error) {
<span class="kw">if let </span><span class="prelude-val">Some</span>(inner_err) = err.get_ref() {
<span class="macro">println!</span>(<span class="string">&quot;Inner error: {inner_err}&quot;</span>);
} <span class="kw">else </span>{
<span class="macro">println!</span>(<span class="string">&quot;No inner error&quot;</span>);
}
}
<span class="kw">fn </span>main() {
<span class="comment">// Will print &quot;No inner error&quot;.
</span>print_error(<span class="kw-2">&amp;</span>change_error(Error::last_os_error()));
<span class="comment">// Will print &quot;Inner error: ...&quot;.
</span>print_error(<span class="kw-2">&amp;</span>change_error(Error::new(ErrorKind::Other, MyError::new())));
}</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_inner" class="method has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/io/error.rs.html#801">source</a></span><h4 class="code-header">pub fn <a href="#method.into_inner" class="fnname">into_inner</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;self<br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'static, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>&gt;&gt;</h4></section></summary><div class="docblock"><p>Consumes the <code>Error</code>, returning its inner error (if any).</p>
<p>If this <a href="struct.Error.html" title="Error"><code>Error</code></a> was constructed via <a href="struct.Error.html#method.new"><code>new</code></a> then this function will
return <a href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html#variant.Some" title="Some"><code>Some</code></a>, otherwise it will return <a href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html#variant.None" title="None"><code>None</code></a>.</p>
<h5 id="examples-7"><a href="#examples-7">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::io::{Error, ErrorKind};
<span class="kw">fn </span>print_error(err: Error) {
<span class="kw">if let </span><span class="prelude-val">Some</span>(inner_err) = err.into_inner() {
<span class="macro">println!</span>(<span class="string">&quot;Inner error: {inner_err}&quot;</span>);
} <span class="kw">else </span>{
<span class="macro">println!</span>(<span class="string">&quot;No inner error&quot;</span>);
}
}
<span class="kw">fn </span>main() {
<span class="comment">// Will print &quot;No inner error&quot;.
</span>print_error(Error::last_os_error());
<span class="comment">// Will print &quot;Inner error: ...&quot;.
</span>print_error(Error::new(ErrorKind::Other, <span class="string">&quot;oh no!&quot;</span>));
}</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.downcast" class="method has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/std/io/error.rs.html#852-854">source</a><h4 class="code-header">pub fn <a href="#method.downcast" class="fnname">downcast</a>&lt;E&gt;(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;E, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/alloc/struct.Global.html" title="struct alloc::alloc::Global">Global</a>&gt;, <a class="struct" href="struct.Error.html" title="struct futures::io::Error">Error</a>&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;E: 'static + <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</span></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>io_error_downcast</code>)</span></div></span></summary><div class="docblock"><p>Attempt to downgrade the inner error to <code>E</code> if any.</p>
<p>If this <a href="struct.Error.html" title="Error"><code>Error</code></a> was constructed via <a href="struct.Error.html#method.new"><code>new</code></a> then this function will
attempt to perform downgrade on it, otherwise it will return <a href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err" title="Err"><code>Err</code></a>.</p>
<p>If downgrade succeeds, it will return <a href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok" title="Ok"><code>Ok</code></a>, otherwise it will also
return <a href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err" title="Err"><code>Err</code></a>.</p>
<h5 id="examples-8"><a href="#examples-8">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attribute">#![feature(io_error_downcast)]
</span><span class="kw">use </span>std::fmt;
<span class="kw">use </span>std::io;
<span class="kw">use </span>std::error::Error;
<span class="attribute">#[derive(Debug)]
</span><span class="kw">enum </span>E {
Io(io::Error),
SomeOtherVariant,
}
<span class="kw">impl </span>fmt::Display <span class="kw">for </span>E {
<span class="comment">// ...
</span>}
<span class="kw">impl </span>Error <span class="kw">for </span>E {}
<span class="kw">impl </span>From&lt;io::Error&gt; <span class="kw">for </span>E {
<span class="kw">fn </span>from(err: io::Error) -&gt; E {
err.downcast::&lt;E&gt;()
.map(|b| <span class="kw-2">*</span>b)
.unwrap_or_else(E::Io)
}
}</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.kind" class="method has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/std/io/error.rs.html#893">source</a><h4 class="code-header">pub fn <a href="#method.kind" class="fnname">kind</a>(&amp;self) -&gt; <a class="enum" href="enum.ErrorKind.html" title="enum futures::io::ErrorKind">ErrorKind</a></h4></section></summary><div class="docblock"><p>Returns the corresponding <a href="enum.ErrorKind.html" title="ErrorKind"><code>ErrorKind</code></a> for this error.</p>
<h5 id="examples-9"><a href="#examples-9">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::io::{Error, ErrorKind};
<span class="kw">fn </span>print_error(err: Error) {
<span class="macro">println!</span>(<span class="string">&quot;{:?}&quot;</span>, err.kind());
}
<span class="kw">fn </span>main() {
<span class="comment">// Will print &quot;Uncategorized&quot;.
</span>print_error(Error::last_os_error());
<span class="comment">// Will print &quot;AddrInUse&quot;.
</span>print_error(Error::new(ErrorKind::AddrInUse, <span class="string">&quot;oh no!&quot;</span>));
}</code></pre></div>
</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/std/io/error.rs.html#73">source</a><a href="#impl-Debug-for-Error" 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.Error.html" title="struct futures::io::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/std/io/error.rs.html#74">source</a><a href="#method.fmt-1" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="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>&gt;</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="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Display-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/std/io/error.rs.html#924">source</a><a href="#impl-Display-for-Error" class="anchor"></a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="struct" href="struct.Error.html" title="struct futures::io::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/std/io/error.rs.html#925">source</a><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fnname">fmt</a>(&amp;self, fmt: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="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>&gt;</h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Error-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/std/io/error.rs.html#939">source</a><a href="#impl-Error-for-Error" class="anchor"></a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> for <a class="struct" href="struct.Error.html" title="struct futures::io::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.description" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/std/io/error.rs.html#941">source</a><a href="#method.description" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.description" class="fnname">description</a>(&amp;self) -&gt; &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a></h4></section></summary><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.42.0: use the Display impl or to_string()</span></div></span><div class='docblock'> <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.description">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cause" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/std/io/error.rs.html#950">source</a><a href="#method.cause" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.cause" class="fnname">cause</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a>&gt;</h4></section></summary><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.33.0: replaced by Error::source, which can support downcasting</span></div></span></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.source" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/std/io/error.rs.html#959">source</a><a href="#method.source" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.source" class="fnname">source</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;(dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + 'static)&gt;</h4></section></summary><div class='docblock'>The lower-level source of this error, if any. <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.source">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.provide" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#193">source</a><a href="#method.provide" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.provide" class="fnname">provide</a>(&amp;'a self, demand: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.Demand.html" title="struct core::any::Demand">Demand</a>&lt;'a&gt;)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>error_generic_member_access</code>)</span></div></span><div class='docblock'>Provides type based access to context intended for error reports. <a href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html#method.provide">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CErrorKind%3E-for-Error" class="impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.14.0">1.14.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/std/io/error.rs.html#457">source</a></span><a href="#impl-From%3CErrorKind%3E-for-Error" 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>&lt;<a class="enum" href="enum.ErrorKind.html" title="enum futures::io::ErrorKind">ErrorKind</a>&gt; for <a class="struct" href="struct.Error.html" title="struct futures::io::Error">Error</a></h3></section></summary><div class="docblock"><p>Intended for use for errors not exposed to the user, where allocating onto
the heap (for normal construction via Error::new) is too costly.</p>
</div><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/std/io/error.rs.html#472">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="fnname">from</a>(kind: <a class="enum" href="enum.ErrorKind.html" title="enum futures::io::ErrorKind">ErrorKind</a>) -&gt; <a class="struct" href="struct.Error.html" title="struct futures::io::Error">Error</a></h4></section></summary><div class="docblock"><p>Converts an <a href="enum.ErrorKind.html" title="ErrorKind"><code>ErrorKind</code></a> into an <a href="struct.Error.html" title="Error"><code>Error</code></a>.</p>
<p>This conversion creates a new error with a simple representation of error kind.</p>
<h5 id="examples-10"><a href="#examples-10">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::io::{Error, ErrorKind};
<span class="kw">let </span>not_found = ErrorKind::NotFound;
<span class="kw">let </span>error = Error::from(not_found);
<span class="macro">assert_eq!</span>(<span class="string">&quot;entity not found&quot;</span>, <span class="macro">format!</span>(<span class="string">&quot;{error}&quot;</span>));</code></pre></div>
</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CIntoInnerError%3CW%3E%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/std/io/buffered/mod.rs.html#177">source</a><a href="#impl-From%3CIntoInnerError%3CW%3E%3E-for-Error" class="anchor"></a><h3 class="code-header">impl&lt;W&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/std/io/buffered/struct.IntoInnerError.html" title="struct std::io::buffered::IntoInnerError">IntoInnerError</a>&lt;W&gt;&gt; for <a class="struct" href="struct.Error.html" title="struct futures::io::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/std/io/buffered/mod.rs.html#178">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="fnname">from</a>(iie: <a class="struct" href="https://doc.rust-lang.org/nightly/std/io/buffered/struct.IntoInnerError.html" title="struct std::io::buffered::IntoInnerError">IntoInnerError</a>&lt;W&gt;) -&gt; <a class="struct" href="struct.Error.html" title="struct futures::io::Error">Error</a></h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CNulError%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/std/io/error.rs.html#80">source</a><a href="#impl-From%3CNulError%3E-for-Error" 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>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/ffi/c_str/struct.NulError.html" title="struct alloc::ffi::c_str::NulError">NulError</a>&gt; for <a class="struct" href="struct.Error.html" title="struct futures::io::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-2" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/std/io/error.rs.html#82">source</a><a href="#method.from-2" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/ffi/c_str/struct.NulError.html" title="struct alloc::ffi::c_str::NulError">NulError</a>) -&gt; <a class="struct" href="struct.Error.html" title="struct futures::io::Error">Error</a></h4></section></summary><div class="docblock"><p>Converts a [<code>alloc::ffi::NulError</code>] into a <a href="struct.Error.html" title="Error"><code>Error</code></a>.</p>
</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Error" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Error" 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.Error.html" title="struct futures::io::Error">Error</a></h3></section><section id="impl-Send-for-Error" class="impl has-srclink"><a href="#impl-Send-for-Error" 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.Error.html" title="struct futures::io::Error">Error</a></h3></section><section id="impl-Sync-for-Error" class="impl has-srclink"><a href="#impl-Sync-for-Error" 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.Error.html" title="struct futures::io::Error">Error</a></h3></section><section id="impl-Unpin-for-Error" class="impl has-srclink"><a href="#impl-Unpin-for-Error" 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.Error.html" title="struct futures::io::Error">Error</a></h3></section><section id="impl-UnwindSafe-for-Error" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Error" 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.Error.html" title="struct futures::io::Error">Error</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-Error" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">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="fnname">type_id</a>(&amp;self) -&gt; <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="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-Error" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><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="fnname">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>T</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="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-Error" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><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="fnname">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut </a>T</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="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-Error" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-3" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-3" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-Error" class="anchor"></a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><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="fnname">into</a>(self) -&gt; 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="From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Provider-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#197">source</a><a href="#impl-Provider-for-Error" class="anchor"></a><h3 class="code-header">impl&lt;E&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Provider.html" title="trait core::any::Provider">Provider</a> for E<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;E: <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.provide-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/error.rs.html#201">source</a><a href="#method.provide-1" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Provider.html#tymethod.provide" class="fnname">provide</a>(&amp;'a self, demand: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.Demand.html" title="struct core::any::Demand">Demand</a>&lt;'a&gt;)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>provide_any</code>)</span></div></span><div class='docblock'>Data providers should implement this method to provide <em>all</em> values they are able to
provide by using <code>demand</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Provider.html#tymethod.provide">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToString-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2497">source</a><a href="#impl-ToString-for-Error" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_string" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2503">source</a><a href="#method.to_string" class="anchor"></a><h4 class="code-header">default fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fnname">to_string</a>(&amp;self) -&gt; <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'>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-Error" class="anchor"></a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><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="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><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="fnname">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<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>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-Error" class="anchor"></a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><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> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<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="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><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="fnname">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<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>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="futures" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.66.0-nightly (5c8bff74b 2022-10-21)" ></div></body></html>