blob: af51ab548607aaf4838170777398cf94684c8bcf [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 Tokio runtime."><meta name="keywords" content="rust, rustlang, rust-lang, Runtime"><title>Runtime in tokio::runtime - 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="../../tokio/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="../../tokio/index.html"><div class="logo-container"><img class="rust-logo" src="../../rust-logo.svg" alt="logo"></div></a><h2 class="location"><a href="#">Runtime</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.block_on">block_on</a></li><li><a href="#method.enter">enter</a></li><li><a href="#method.handle">handle</a></li><li><a href="#method.new">new</a></li><li><a href="#method.shutdown_background">shutdown_background</a></li><li><a href="#method.shutdown_timeout">shutdown_timeout</a></li><li><a href="#method.spawn">spawn</a></li><li><a href="#method.spawn_blocking">spawn_blocking</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Debug-for-Runtime">Debug</a></li><li><a href="#impl-Drop-for-Runtime">Drop</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Runtime">!RefUnwindSafe</a></li><li><a href="#impl-Send-for-Runtime">Send</a></li><li><a href="#impl-Sync-for-Runtime">Sync</a></li><li><a href="#impl-Unpin-for-Runtime">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Runtime">!UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Runtime">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Runtime">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Runtime">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-Runtime">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-Runtime">Into&lt;U&gt;</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Runtime">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-Runtime">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In tokio::runtime</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">tokio</a>::<wbr><a href="index.html">runtime</a>::<wbr><a class="struct" href="#">Runtime</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"><a class="srclink" href="../../src/tokio/runtime/runtime.rs.html#53-62">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 Runtime { /* 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 Tokio runtime.</p>
<p>The runtime provides an I/O driver, task scheduler, <a href="../time/index.html">timer</a>, and
blocking pool, necessary for running asynchronous tasks.</p>
<p>Instances of <code>Runtime</code> can be created using <a href="struct.Runtime.html#method.new"><code>new</code></a>, or <a href="struct.Builder.html"><code>Builder</code></a>.
However, most users will use the <code>#[tokio::main]</code> annotation on their
entry point instead.</p>
<p>See <a href="index.html">module level</a> documentation for more details.</p>
<h2 id="shutdown"><a href="#shutdown">Shutdown</a></h2>
<p>Shutting down the runtime is done by dropping the value. The current
thread will block until the shut down operation has completed.</p>
<ul>
<li>Drain any scheduled work queues.</li>
<li>Drop any futures that have not yet completed.</li>
<li>Drop the reactor.</li>
</ul>
<p>Once the reactor has dropped, any outstanding I/O resources bound to
that reactor will no longer function. Calling any method on them will
result in an error.</p>
<h2 id="sharing"><a href="#sharing">Sharing</a></h2>
<p>The Tokio runtime implements <code>Sync</code> and <code>Send</code> to allow you to wrap it
in a <code>Arc</code>. Most fn take <code>&amp;self</code> to allow you to call them concurrently
across multiple threads.</p>
<p>Calls to <code>shutdown</code> and <code>shutdown_timeout</code> require exclusive ownership of
the runtime type and this can be achieved via <code>Arc::try_unwrap</code> when only
one strong count reference is left over.</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-Runtime" class="impl has-srclink"><a class="srclink rightside" href="../../src/tokio/runtime/runtime.rs.html#87-394">source</a><a href="#impl-Runtime" class="anchor"></a><h3 class="code-header">impl <a class="struct" href="struct.Runtime.html" title="struct tokio::runtime::Runtime">Runtime</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="../../src/tokio/runtime/runtime.rs.html#131-133">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fnname">new</a>() -&gt; Result&lt;<a class="struct" href="struct.Runtime.html" title="struct tokio::runtime::Runtime">Runtime</a>&gt;</h4></section></summary><div class="docblock"><p>Creates a new runtime instance with default configuration values.</p>
<p>This results in the multi threaded scheduler, I/O driver, and time driver being
initialized.</p>
<p>Most applications will not need to call this function directly. Instead,
they will use the <a href="../attr.main.html"><code>#[tokio::main]</code> attribute</a>. When a more complex
configuration is necessary, the <a href="struct.Builder.html">runtime builder</a> may be used.</p>
<p>See <a href="index.html">module level</a> documentation for more details.</p>
<h5 id="examples"><a href="#examples">Examples</a></h5>
<p>Creating a new <code>Runtime</code> with default configuration values.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>tokio::runtime::Runtime;
<span class="kw">let </span>rt = Runtime::new()
.unwrap();
<span class="comment">// Use the runtime...</span></code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.handle" class="method has-srclink"><a class="srclink rightside" href="../../src/tokio/runtime/runtime.rs.html#156-158">source</a><h4 class="code-header">pub fn <a href="#method.handle" class="fnname">handle</a>(&amp;self) -&gt; &amp;<a class="struct" href="struct.Handle.html" title="struct tokio::runtime::Handle">Handle</a></h4></section></summary><div class="docblock"><p>Returns a handle to the runtime’s spawner.</p>
<p>The returned handle can be used to spawn tasks that run on this runtime, and can
be cloned to allow moving the <code>Handle</code> to other threads.</p>
<p>Calling <a href="struct.Handle.html#method.block_on" title="Handle::block_on"><code>Handle::block_on</code></a> on a handle to a <code>current_thread</code> runtime is error-prone.
Refer to the documentation of <a href="struct.Handle.html#method.block_on" title="Handle::block_on"><code>Handle::block_on</code></a> for more.</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="kw">use </span>tokio::runtime::Runtime;
<span class="kw">let </span>rt = Runtime::new()
.unwrap();
<span class="kw">let </span>handle = rt.handle();
<span class="comment">// Use the handle...</span></code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.spawn" class="method has-srclink"><a class="srclink rightside" href="../../src/tokio/runtime/runtime.rs.html#190-196">source</a><h4 class="code-header">pub fn <a href="#method.spawn" class="fnname">spawn</a>&lt;F&gt;(&amp;self, future: F) -&gt; <a class="struct" href="../task/struct.JoinHandle.html" title="struct tokio::task::JoinHandle">JoinHandle</a>&lt;F::Output&gt;<span class="notable-traits"><span class="notable-traits-tooltip"><span class="notable-traits-tooltiptext"><span class="docblock"><span class="notable">Notable traits for <a class="struct" href="../task/struct.JoinHandle.html" title="struct tokio::task::JoinHandle">JoinHandle</a>&lt;T&gt;</span><code class="content"><span class="where fmt-newline">impl&lt;T&gt; Future for <a class="struct" href="../task/struct.JoinHandle.html" title="struct tokio::task::JoinHandle">JoinHandle</a>&lt;T&gt;</span><span class="where fmt-newline"> type <a class="associatedtype">Output</a> = Result&lt;T, <a class="struct" href="../task/struct.JoinError.html" title="struct tokio::task::JoinError">JoinError</a>&gt;;</span></code></span></span></span></span><span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;F: Future + Send + 'static,<br>&nbsp;&nbsp;&nbsp;&nbsp;F::Output: Send + 'static,</span></h4></section></summary><div class="docblock"><p>Spawns a future onto the Tokio runtime.</p>
<p>This spawns the given future onto the runtime’s executor, usually a
thread pool. The thread pool is then responsible for polling the future
until it completes.</p>
<p>You do not have to <code>.await</code> the returned <code>JoinHandle</code> to make the
provided future start execution. It will start running in the
background immediately when <code>spawn</code> is called.</p>
<p>See <a href="index.html">module level</a> documentation for more details.</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>tokio::runtime::Runtime;
<span class="comment">// Create the runtime
</span><span class="kw">let </span>rt = Runtime::new().unwrap();
<span class="comment">// Spawn a future onto the runtime
</span>rt.spawn(<span class="kw">async </span>{
<span class="macro">println!</span>(<span class="string">&quot;now running on a worker thread&quot;</span>);
});</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.spawn_blocking" class="method has-srclink"><a class="srclink rightside" href="../../src/tokio/runtime/runtime.rs.html#215-221">source</a><h4 class="code-header">pub fn <a href="#method.spawn_blocking" class="fnname">spawn_blocking</a>&lt;F, R&gt;(&amp;self, func: F) -&gt; <a class="struct" href="../task/struct.JoinHandle.html" title="struct tokio::task::JoinHandle">JoinHandle</a>&lt;R&gt;<span class="notable-traits"><span class="notable-traits-tooltip"><span class="notable-traits-tooltiptext"><span class="docblock"><span class="notable">Notable traits for <a class="struct" href="../task/struct.JoinHandle.html" title="struct tokio::task::JoinHandle">JoinHandle</a>&lt;T&gt;</span><code class="content"><span class="where fmt-newline">impl&lt;T&gt; Future for <a class="struct" href="../task/struct.JoinHandle.html" title="struct tokio::task::JoinHandle">JoinHandle</a>&lt;T&gt;</span><span class="where fmt-newline"> type <a class="associatedtype">Output</a> = Result&lt;T, <a class="struct" href="../task/struct.JoinError.html" title="struct tokio::task::JoinError">JoinError</a>&gt;;</span></code></span></span></span></span><span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;F: FnOnce() -&gt; R + Send + 'static,<br>&nbsp;&nbsp;&nbsp;&nbsp;R: Send + 'static,</span></h4></section></summary><div class="docblock"><p>Runs the provided function on an executor dedicated to blocking operations.</p>
<h5 id="examples-3"><a href="#examples-3">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>tokio::runtime::Runtime;
<span class="comment">// Create the runtime
</span><span class="kw">let </span>rt = Runtime::new().unwrap();
<span class="comment">// Spawn a blocking function onto the runtime
</span>rt.spawn_blocking(|| {
<span class="macro">println!</span>(<span class="string">&quot;now running on a worker thread&quot;</span>);
});</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.block_on" class="method has-srclink"><a class="srclink rightside" href="../../src/tokio/runtime/runtime.rs.html#270-286">source</a><h4 class="code-header">pub fn <a href="#method.block_on" class="fnname">block_on</a>&lt;F:&nbsp;Future&gt;(&amp;self, future: F) -&gt; F::Output</h4></section></summary><div class="docblock"><p>Runs a future to completion on the Tokio runtime. This is the
runtime’s entry point.</p>
<p>This runs the given future on the current thread, blocking until it is
complete, and yielding its resolved result. Any tasks or timers
which the future spawns internally will be executed on the runtime.</p>
<h5 id="multi-thread-scheduler"><a href="#multi-thread-scheduler">Multi thread scheduler</a></h5>
<p>When the multi thread scheduler is used this will allow futures
to run within the io driver and timer context of the overall runtime.</p>
<p>Any spawned tasks will continue running after <code>block_on</code> returns.</p>
<h5 id="current-thread-scheduler"><a href="#current-thread-scheduler">Current thread scheduler</a></h5>
<p>When the current thread scheduler is enabled <code>block_on</code>
can be called concurrently from multiple threads. The first call
will take ownership of the io and timer drivers. This means
other threads which do not own the drivers will hook into that one.
When the first <code>block_on</code> completes, other threads will be able to
“steal” the driver to allow continued execution of their futures.</p>
<p>Any spawned tasks will be suspended after <code>block_on</code> returns. Calling
<code>block_on</code> again will resume previously spawned tasks.</p>
<h5 id="panics"><a href="#panics">Panics</a></h5>
<p>This function panics if the provided future panics, or if called within an
asynchronous execution context.</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>tokio::runtime::Runtime;
<span class="comment">// Create the runtime
</span><span class="kw">let </span>rt = Runtime::new().unwrap();
<span class="comment">// Execute the future, blocking the current thread until completion
</span>rt.block_on(<span class="kw">async </span>{
<span class="macro">println!</span>(<span class="string">&quot;hello&quot;</span>);
});</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.enter" class="method has-srclink"><a class="srclink rightside" href="../../src/tokio/runtime/runtime.rs.html#320-322">source</a><h4 class="code-header">pub fn <a href="#method.enter" class="fnname">enter</a>(&amp;self) -&gt; <a class="struct" href="struct.EnterGuard.html" title="struct tokio::runtime::EnterGuard">EnterGuard</a>&lt;'_&gt;</h4></section></summary><div class="docblock"><p>Enters the runtime context.</p>
<p>This allows you to construct types that must have an executor
available on creation such as <a href="../time/struct.Sleep.html"><code>Sleep</code></a> or <a href="../net/struct.TcpStream.html"><code>TcpStream</code></a>. It will
also allow you to call methods such as <a href="../task/fn.spawn.html"><code>tokio::spawn</code></a>.</p>
<h5 id="example"><a href="#example">Example</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>tokio::runtime::Runtime;
<span class="kw">fn </span>function_that_spawns(msg: String) {
<span class="comment">// Had we not used `rt.enter` below, this would panic.
</span>tokio::spawn(<span class="kw">async move </span>{
<span class="macro">println!</span>(<span class="string">&quot;{}&quot;</span>, msg);
});
}
<span class="kw">fn </span>main() {
<span class="kw">let </span>rt = Runtime::new().unwrap();
<span class="kw">let </span>s = <span class="string">&quot;Hello World!&quot;</span>.to_string();
<span class="comment">// By entering the context, we tie `tokio::spawn` to this executor.
</span><span class="kw">let </span>_guard = rt.enter();
function_that_spawns(s);
}</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.shutdown_timeout" class="method has-srclink"><a class="srclink rightside" href="../../src/tokio/runtime/runtime.rs.html#359-363">source</a><h4 class="code-header">pub fn <a href="#method.shutdown_timeout" class="fnname">shutdown_timeout</a>(self, duration: Duration)</h4></section></summary><div class="docblock"><p>Shuts down the runtime, waiting for at most <code>duration</code> for all spawned
task to shutdown.</p>
<p>Usually, dropping a <code>Runtime</code> handle is sufficient as tasks are able to
shutdown in a timely fashion. However, dropping a <code>Runtime</code> will wait
indefinitely for all tasks to terminate, and there are cases where a long
blocking task has been spawned, which can block dropping <code>Runtime</code>.</p>
<p>In this case, calling <code>shutdown_timeout</code> with an explicit wait timeout
can work. The <code>shutdown_timeout</code> will signal all tasks to shutdown and
will wait for at most <code>duration</code> for all spawned tasks to terminate. If
<code>timeout</code> elapses before all tasks are dropped, the function returns and
outstanding tasks are potentially leaked.</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>tokio::runtime::Runtime;
<span class="kw">use </span>tokio::task;
<span class="kw">use </span>std::thread;
<span class="kw">use </span>std::time::Duration;
<span class="kw">fn </span>main() {
<span class="kw">let </span>runtime = Runtime::new().unwrap();
runtime.block_on(<span class="kw">async move </span>{
task::spawn_blocking(<span class="kw">move </span>|| {
thread::sleep(Duration::from_secs(<span class="number">10_000</span>));
});
});
runtime.shutdown_timeout(Duration::from_millis(<span class="number">100</span>));
}</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.shutdown_background" class="method has-srclink"><a class="srclink rightside" href="../../src/tokio/runtime/runtime.rs.html#391-393">source</a><h4 class="code-header">pub fn <a href="#method.shutdown_background" class="fnname">shutdown_background</a>(self)</h4></section></summary><div class="docblock"><p>Shuts down the runtime, without waiting for any spawned tasks to shutdown.</p>
<p>This can be useful if you want to drop a runtime from within another runtime.
Normally, dropping a runtime will block indefinitely for spawned blocking tasks
to complete, which would normally not be permitted within an asynchronous context.
By calling <code>shutdown_background()</code>, you can drop the runtime from such a context.</p>
<p>Note however, that because we do not wait for any blocking tasks to complete, this
may result in a resource leak (in that any blocking tasks are still running until they
return.</p>
<p>This function is equivalent to calling <code>shutdown_timeout(Duration::from_nanos(0))</code>.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>tokio::runtime::Runtime;
<span class="kw">fn </span>main() {
<span class="kw">let </span>runtime = Runtime::new().unwrap();
runtime.block_on(<span class="kw">async move </span>{
<span class="kw">let </span>inner_runtime = Runtime::new().unwrap();
<span class="comment">// ...
</span>inner_runtime.shutdown_background();
});
}</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-Runtime" class="impl has-srclink"><a class="srclink rightside" href="../../src/tokio/runtime/runtime.rs.html#52">source</a><a href="#impl-Debug-for-Runtime" class="anchor"></a><h3 class="code-header">impl Debug for <a class="struct" href="struct.Runtime.html" title="struct tokio::runtime::Runtime">Runtime</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="../../src/tokio/runtime/runtime.rs.html#52">source</a><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a class="fnname">fmt</a>(&amp;self, f: &amp;mut Formatter&lt;'_&gt;) -&gt; Result</h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Drop-for-Runtime" class="impl has-srclink"><a class="srclink rightside" href="../../src/tokio/runtime/runtime.rs.html#397-414">source</a><a href="#impl-Drop-for-Runtime" class="anchor"></a><h3 class="code-header">impl Drop for <a class="struct" href="struct.Runtime.html" title="struct tokio::runtime::Runtime">Runtime</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/tokio/runtime/runtime.rs.html#398-413">source</a><a href="#method.drop" class="anchor"></a><h4 class="code-header">fn <a class="fnname">drop</a>(&amp;mut self)</h4></section></summary><div class='docblock'>Executes the destructor for this type. <a>Read more</a></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-Runtime" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Runtime" class="anchor"></a><h3 class="code-header">impl !RefUnwindSafe for <a class="struct" href="struct.Runtime.html" title="struct tokio::runtime::Runtime">Runtime</a></h3></section><section id="impl-Send-for-Runtime" class="impl has-srclink"><a href="#impl-Send-for-Runtime" class="anchor"></a><h3 class="code-header">impl Send for <a class="struct" href="struct.Runtime.html" title="struct tokio::runtime::Runtime">Runtime</a></h3></section><section id="impl-Sync-for-Runtime" class="impl has-srclink"><a href="#impl-Sync-for-Runtime" class="anchor"></a><h3 class="code-header">impl Sync for <a class="struct" href="struct.Runtime.html" title="struct tokio::runtime::Runtime">Runtime</a></h3></section><section id="impl-Unpin-for-Runtime" class="impl has-srclink"><a href="#impl-Unpin-for-Runtime" class="anchor"></a><h3 class="code-header">impl Unpin for <a class="struct" href="struct.Runtime.html" title="struct tokio::runtime::Runtime">Runtime</a></h3></section><section id="impl-UnwindSafe-for-Runtime" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Runtime" class="anchor"></a><h3 class="code-header">impl !UnwindSafe for <a class="struct" href="struct.Runtime.html" title="struct tokio::runtime::Runtime">Runtime</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-Runtime" class="impl has-srclink"><a href="#impl-Any-for-Runtime" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; Any for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: 'static + ?Sized,</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 href="#method.type_id" class="anchor"></a><h4 class="code-header">fn <a class="fnname">type_id</a>(&amp;self) -&gt; TypeId</h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Runtime" class="impl has-srclink"><a href="#impl-Borrow%3CT%3E-for-Runtime" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; Borrow&lt;T&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: ?Sized,</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="since rightside" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span><a href="#method.borrow" class="anchor"></a><h4 class="code-header">fn <a class="fnname">borrow</a>(&amp;self) -&gt; &amp;T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Runtime" class="impl has-srclink"><a href="#impl-BorrowMut%3CT%3E-for-Runtime" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; BorrowMut&lt;T&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: ?Sized,</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="since rightside" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">fn <a class="fnname">borrow_mut</a>(&amp;mut self) -&gt; &amp;mut T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Runtime" class="impl has-srclink"><a href="#impl-From%3CT%3E-for-Runtime" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; From&lt;T&gt; for T</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"><span class="since rightside" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a 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-Runtime" class="impl has-srclink"><a href="#impl-Into%3CU%3E-for-Runtime" class="anchor"></a><h3 class="code-header">impl&lt;T, U&gt; Into&lt;U&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;U: From&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="since rightside" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span><a href="#method.into" class="anchor"></a><h4 class="code-header">fn <a 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>[From]&lt;T&gt; for U</code> chooses to do.</p>
</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Runtime" class="impl has-srclink"><a href="#impl-TryFrom%3CU%3E-for-Runtime" class="anchor"></a><h3 class="code-header">impl&lt;T, U&gt; TryFrom&lt;U&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;U: Into&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 class="associatedtype">Error</a> = Infallible</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="since rightside" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span><a href="#method.try_from" class="anchor"></a><h4 class="code-header">fn <a class="fnname">try_from</a>(value: U) -&gt; Result&lt;T, &lt;T as TryFrom&lt;U&gt;&gt;::Error&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-Runtime" class="impl has-srclink"><a href="#impl-TryInto%3CU%3E-for-Runtime" class="anchor"></a><h3 class="code-header">impl&lt;T, U&gt; TryInto&lt;U&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;U: TryFrom&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 class="associatedtype">Error</a> = &lt;U as TryFrom&lt;T&gt;&gt;::Error</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="since rightside" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span><a href="#method.try_into" class="anchor"></a><h4 class="code-header">fn <a class="fnname">try_into</a>(self) -&gt; Result&lt;U, &lt;U as TryFrom&lt;T&gt;&gt;::Error&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="tokio" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.66.0-nightly (5c8bff74b 2022-10-21)" ></div></body></html>