Files
phy/async_task/struct.Builder.html
Orion Kindel 0ce894e6b0 doc
2025-03-18 10:30:23 -05:00

231 lines
46 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

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

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A builder that creates a new task."><title>Builder in async_task - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../static.files/rustdoc-42caa33d.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="async_task" data-themes="" data-resource-suffix="" data-rustdoc-version="1.84.0 (9fc6b4312 2025-01-07)" data-channel="1.84.0" data-search-js="search-92e6798f.js" data-settings-js="settings-0f613d39.js" ><script src="../static.files/storage-59e33391.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-5f194d8c.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-893ab5e7.css"></noscript><link rel="icon" href="https://raw.githubusercontent.com/smol-rs/smol/master/assets/images/logo_fullsize_transparent.png"></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" title="show sidebar"></button><a class="logo-container" href="../async_task/index.html"><img src="https://raw.githubusercontent.com/smol-rs/smol/master/assets/images/logo_fullsize_transparent.png" alt=""></a></nav><nav class="sidebar"><div class="sidebar-crate"><a class="logo-container" href="../async_task/index.html"><img src="https://raw.githubusercontent.com/smol-rs/smol/master/assets/images/logo_fullsize_transparent.png" alt="logo"></a><h2><a href="../async_task/index.html">async_<wbr>task</a><span class="version">4.7.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Builder</a></h2><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.metadata" title="metadata">metadata</a></li><li><a href="#method.new" title="new">new</a></li><li><a href="#method.propagate_panic" title="propagate_panic">propagate_panic</a></li><li><a href="#method.spawn" title="spawn">spawn</a></li><li><a href="#method.spawn_local" title="spawn_local">spawn_local</a></li><li><a href="#method.spawn_unchecked" title="spawn_unchecked">spawn_unchecked</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Debug-for-Builder%3CM%3E" title="Debug">Debug</a></li><li><a href="#impl-Default-for-Builder%3CM%3E" title="Default">Default</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-Builder%3CM%3E" title="Freeze">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-Builder%3CM%3E" title="RefUnwindSafe">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Builder%3CM%3E" title="Send">Send</a></li><li><a href="#impl-Sync-for-Builder%3CM%3E" title="Sync">Sync</a></li><li><a href="#impl-Unpin-for-Builder%3CM%3E" title="Unpin">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Builder%3CM%3E" title="UnwindSafe">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T" title="Any">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T" title="Borrow&#60;T&#62;">Borrow&#60;T&#62;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T" title="BorrowMut&#60;T&#62;">BorrowMut&#60;T&#62;</a></li><li><a href="#impl-From%3CT%3E-for-T" title="From&#60;T&#62;">From&#60;T&#62;</a></li><li><a href="#impl-Into%3CU%3E-for-T" title="Into&#60;U&#62;">Into&#60;U&#62;</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T" title="TryFrom&#60;U&#62;">TryFrom&#60;U&#62;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T" title="TryInto&#60;U&#62;">TryInto&#60;U&#62;</a></li></ul></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="index.html">In crate async_<wbr>task</a></h2></div></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><rustdoc-search></rustdoc-search><section id="main-content" class="content"><div class="main-heading"><span class="rustdoc-breadcrumbs"><a href="index.html">async_task</a></span><h1>Struct <span class="struct">Builder</span><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../src/async_task/runnable.rs.html#27-34">Source</a> </span></div><pre class="rust item-decl"><code>pub struct Builder&lt;M&gt; { <span class="comment">/* private fields */</span> }</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A builder that creates a new task.</p>
</div></details><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Builder%3C()%3E" class="impl"><a class="src rightside" href="../src/async_task/runnable.rs.html#171-278">Source</a><a href="#impl-Builder%3C()%3E" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Builder.html" title="struct async_task::Builder">Builder</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.unit.html">()</a>&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.new" class="method"><a class="src rightside" href="../src/async_task/runnable.rs.html#184-190">Source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>() -&gt; <a class="struct" href="struct.Builder.html" title="struct async_task::Builder">Builder</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.unit.html">()</a>&gt;</h4></section></summary><div class="docblock"><p>Creates a new task builder.</p>
<p>By default, this task builder has no metadata. Use the [<code>metadata</code>] method to
set the metadata.</p>
<h5 id="examples"><a class="doc-anchor" href="#examples">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>async_task::Builder;
<span class="kw">let </span>(runnable, task) = Builder::new().spawn(|()| <span class="kw">async </span>{}, |<span class="kw">_</span>| {});</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.metadata" class="method"><a class="src rightside" href="../src/async_task/runnable.rs.html#271-277">Source</a><h4 class="code-header">pub fn <a href="#method.metadata" class="fn">metadata</a>&lt;M&gt;(self, metadata: M) -&gt; <a class="struct" href="struct.Builder.html" title="struct async_task::Builder">Builder</a>&lt;M&gt;</h4></section></summary><div class="docblock"><p>Adds metadata to the task.</p>
<p>In certain cases, it may be useful to associate some metadata with a task. For instance,
you may want to associate a name with a task, or a priority for a priority queue. This
method allows the user to attach arbitrary metadata to a task that is available through
the <a href="struct.Runnable.html" title="struct async_task::Runnable"><code>Runnable</code></a> or the <a href="struct.Task.html" title="struct async_task::Task"><code>Task</code></a>.</p>
<h5 id="examples-1"><a class="doc-anchor" href="#examples-1">§</a>Examples</h5>
<p>This example creates an executor that associates a “priority” number with each task, and
then runs the tasks in order of priority.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>async_task::{Builder, Runnable};
<span class="kw">use </span>once_cell::sync::Lazy;
<span class="kw">use </span>std::cmp;
<span class="kw">use </span>std::collections::BinaryHeap;
<span class="kw">use </span>std::sync::Mutex;
<span class="doccomment">/// A wrapper around a `Runnable&lt;usize&gt;` that implements `Ord` so that it can be used in a
/// priority queue.
</span><span class="kw">struct </span>TaskWrapper(Runnable&lt;usize&gt;);
<span class="kw">impl </span>PartialEq <span class="kw">for </span>TaskWrapper {
<span class="kw">fn </span>eq(<span class="kw-2">&amp;</span><span class="self">self</span>, other: <span class="kw-2">&amp;</span><span class="self">Self</span>) -&gt; bool {
<span class="self">self</span>.<span class="number">0</span>.metadata() == other.<span class="number">0</span>.metadata()
}
}
<span class="kw">impl </span>Eq <span class="kw">for </span>TaskWrapper {}
<span class="kw">impl </span>PartialOrd <span class="kw">for </span>TaskWrapper {
<span class="kw">fn </span>partial_cmp(<span class="kw-2">&amp;</span><span class="self">self</span>, other: <span class="kw-2">&amp;</span><span class="self">Self</span>) -&gt; <span class="prelude-ty">Option</span>&lt;cmp::Ordering&gt; {
<span class="prelude-val">Some</span>(<span class="self">self</span>.cmp(other))
}
}
<span class="kw">impl </span>Ord <span class="kw">for </span>TaskWrapper {
<span class="kw">fn </span>cmp(<span class="kw-2">&amp;</span><span class="self">self</span>, other: <span class="kw-2">&amp;</span><span class="self">Self</span>) -&gt; cmp::Ordering {
<span class="self">self</span>.<span class="number">0</span>.metadata().cmp(other.<span class="number">0</span>.metadata())
}
}
<span class="kw">static </span>EXECUTOR: Lazy&lt;Mutex&lt;BinaryHeap&lt;TaskWrapper&gt;&gt;&gt; = Lazy::new(|| {
Mutex::new(BinaryHeap::new())
});
<span class="kw">let </span>schedule = |runnable| {
EXECUTOR.lock().unwrap().push(TaskWrapper(runnable));
};
<span class="comment">// Spawn a few tasks with different priorities.
</span><span class="kw">let </span>spawn_task = <span class="kw">move </span>|priority| {
<span class="kw">let </span>(runnable, task) = Builder::new().metadata(priority).spawn(
<span class="kw">move </span>|<span class="kw">_</span>| <span class="kw">async move </span>{ priority },
schedule,
);
runnable.schedule();
task
};
<span class="kw">let </span>t1 = spawn_task(<span class="number">1</span>);
<span class="kw">let </span>t2 = spawn_task(<span class="number">2</span>);
<span class="kw">let </span>t3 = spawn_task(<span class="number">3</span>);
<span class="comment">// Run the tasks in order of priority.
</span><span class="kw">let </span><span class="kw-2">mut </span>metadata_seen = <span class="macro">vec!</span>[];
<span class="kw">while let </span><span class="prelude-val">Some</span>(TaskWrapper(runnable)) = EXECUTOR.lock().unwrap().pop() {
metadata_seen.push(<span class="kw-2">*</span>runnable.metadata());
runnable.run();
}
<span class="macro">assert_eq!</span>(metadata_seen, <span class="macro">vec!</span>[<span class="number">3</span>, <span class="number">2</span>, <span class="number">1</span>]);
<span class="macro">assert_eq!</span>(t1.<span class="kw">await</span>, <span class="number">1</span>);
<span class="macro">assert_eq!</span>(t2.<span class="kw">await</span>, <span class="number">2</span>);
<span class="macro">assert_eq!</span>(t3.<span class="kw">await</span>, <span class="number">3</span>);</code></pre></div>
</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Builder%3CM%3E" class="impl"><a class="src rightside" href="../src/async_task/runnable.rs.html#280-534">Source</a><a href="#impl-Builder%3CM%3E" class="anchor">§</a><h3 class="code-header">impl&lt;M&gt; <a class="struct" href="struct.Builder.html" title="struct async_task::Builder">Builder</a>&lt;M&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.propagate_panic" class="method"><a class="src rightside" href="../src/async_task/runnable.rs.html#322-327">Source</a><h4 class="code-header">pub fn <a href="#method.propagate_panic" class="fn">propagate_panic</a>(self, propagate_panic: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.bool.html">bool</a>) -&gt; <a class="struct" href="struct.Builder.html" title="struct async_task::Builder">Builder</a>&lt;M&gt;</h4></section></summary><div class="docblock"><p>Propagates panics that occur in the task.</p>
<p>When this is <code>true</code>, panics that occur in the task will be propagated to the caller of
the <a href="struct.Task.html" title="struct async_task::Task"><code>Task</code></a>. When this is false, no special action is taken when a panic occurs in the
task, meaning that the caller of <a href="struct.Runnable.html#method.run" title="method async_task::Runnable::run"><code>Runnable::run</code></a> will observe a panic.</p>
<p>This is only available when the <code>std</code> feature is enabled. By default, this is <code>false</code>.</p>
<h5 id="examples-2"><a class="doc-anchor" href="#examples-2">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>async_task::Builder;
<span class="kw">use </span>futures_lite::future::poll_fn;
<span class="kw">use </span>std::future::Future;
<span class="kw">use </span>std::panic;
<span class="kw">use </span>std::pin::Pin;
<span class="kw">use </span>std::task::{Context, Poll};
<span class="kw">fn </span>did_panic&lt;F: FnOnce()&gt;(f: F) -&gt; bool {
panic::catch_unwind(panic::AssertUnwindSafe(f)).is_err()
}
<span class="kw">let </span>(runnable1, <span class="kw-2">mut </span>task1) = Builder::new()
.propagate_panic(<span class="bool-val">true</span>)
.spawn(|()| <span class="kw">async move </span>{ <span class="macro">panic!</span>() }, |<span class="kw">_</span>| {});
<span class="kw">let </span>(runnable2, <span class="kw-2">mut </span>task2) = Builder::new()
.propagate_panic(<span class="bool-val">false</span>)
.spawn(|()| <span class="kw">async move </span>{ <span class="macro">panic!</span>() }, |<span class="kw">_</span>| {});
<span class="macro">assert!</span>(!did_panic(|| { runnable1.run(); }));
<span class="macro">assert!</span>(did_panic(|| { runnable2.run(); }));
<span class="kw">let </span>waker = poll_fn(|cx| Poll::Ready(cx.waker().clone())).<span class="kw">await</span>;
<span class="kw">let </span><span class="kw-2">mut </span>cx = Context::from_waker(<span class="kw-2">&amp;</span>waker);
<span class="macro">assert!</span>(did_panic(|| { <span class="kw">let _ </span>= Pin::new(<span class="kw-2">&amp;mut </span>task1).poll(<span class="kw-2">&amp;mut </span>cx); }));
<span class="macro">assert!</span>(did_panic(|| { <span class="kw">let _ </span>= Pin::new(<span class="kw-2">&amp;mut </span>task2).poll(<span class="kw-2">&amp;mut </span>cx); }));</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.spawn" class="method"><a class="src rightside" href="../src/async_task/runnable.rs.html#362-370">Source</a><h4 class="code-header">pub fn <a href="#method.spawn" class="fn">spawn</a>&lt;F, Fut, S&gt;(
self,
future: F,
schedule: S,
) -&gt; (<a class="struct" href="struct.Runnable.html" title="struct async_task::Runnable">Runnable</a>&lt;M&gt;, <a class="struct" href="struct.Task.html" title="struct async_task::Task">Task</a>&lt;Fut::<a class="associatedtype" href="https://doc.rust-lang.org/1.84.0/core/future/future/trait.Future.html#associatedtype.Output" title="type core::future::future::Future::Output">Output</a>, M&gt;)<div class="where">where
F: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;M</a>) -&gt; Fut,
Fut: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a> + <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'static,
Fut::<a class="associatedtype" href="https://doc.rust-lang.org/1.84.0/core/future/future/trait.Future.html#associatedtype.Output" title="type core::future::future::Future::Output">Output</a>: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'static,
S: <a class="trait" href="trait.Schedule.html" title="trait async_task::Schedule">Schedule</a>&lt;M&gt; + <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + 'static,</div></h4></section></summary><div class="docblock"><p>Creates a new task.</p>
<p>The returned <a href="struct.Runnable.html" title="struct async_task::Runnable"><code>Runnable</code></a> is used to poll the <code>future</code>, and the <a href="struct.Task.html" title="struct async_task::Task"><code>Task</code></a> is used to await its
output.</p>
<p>Method <a href="struct.Runnable.html#method.run" title="method async_task::Runnable::run"><code>run()</code></a> polls the tasks future once. Then, the <a href="struct.Runnable.html" title="struct async_task::Runnable"><code>Runnable</code></a>
vanishes and only reappears when its <a href="https://doc.rust-lang.org/1.84.0/core/task/wake/struct.Waker.html" title="struct core::task::wake::Waker"><code>Waker</code></a> wakes the task, thus scheduling it to be run
again.</p>
<p>When the task is woken, its <a href="struct.Runnable.html" title="struct async_task::Runnable"><code>Runnable</code></a> is passed to the <code>schedule</code> function.
The <code>schedule</code> function should not attempt to run the <a href="struct.Runnable.html" title="struct async_task::Runnable"><code>Runnable</code></a> nor to drop it. Instead, it
should push it into a task queue so that it can be processed later.</p>
<p>If you need to spawn a future that does not implement <a href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Send.html" title="trait core::marker::Send"><code>Send</code></a> or isnt <code>'static</code>, consider
using <a href="fn.spawn_local.html" title="fn async_task::spawn_local"><code>spawn_local()</code></a> or <a href="fn.spawn_unchecked.html" title="fn async_task::spawn_unchecked"><code>spawn_unchecked()</code></a> instead.</p>
<h5 id="examples-3"><a class="doc-anchor" href="#examples-3">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>async_task::Builder;
<span class="comment">// The future inside the task.
</span><span class="kw">let </span>future = <span class="kw">async </span>{
<span class="macro">println!</span>(<span class="string">"Hello, world!"</span>);
};
<span class="comment">// A function that schedules the task when it gets woken up.
</span><span class="kw">let </span>(s, r) = flume::unbounded();
<span class="kw">let </span>schedule = <span class="kw">move </span>|runnable| s.send(runnable).unwrap();
<span class="comment">// Create a task with the future and the schedule function.
</span><span class="kw">let </span>(runnable, task) = Builder::new().spawn(|()| future, schedule);</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.spawn_local" class="method"><a class="src rightside" href="../src/async_task/runnable.rs.html#405-470">Source</a><h4 class="code-header">pub fn <a href="#method.spawn_local" class="fn">spawn_local</a>&lt;F, Fut, S&gt;(
self,
future: F,
schedule: S,
) -&gt; (<a class="struct" href="struct.Runnable.html" title="struct async_task::Runnable">Runnable</a>&lt;M&gt;, <a class="struct" href="struct.Task.html" title="struct async_task::Task">Task</a>&lt;Fut::<a class="associatedtype" href="https://doc.rust-lang.org/1.84.0/core/future/future/trait.Future.html#associatedtype.Output" title="type core::future::future::Future::Output">Output</a>, M&gt;)<div class="where">where
F: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;M</a>) -&gt; Fut,
Fut: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a> + 'static,
Fut::<a class="associatedtype" href="https://doc.rust-lang.org/1.84.0/core/future/future/trait.Future.html#associatedtype.Output" title="type core::future::future::Future::Output">Output</a>: 'static,
S: <a class="trait" href="trait.Schedule.html" title="trait async_task::Schedule">Schedule</a>&lt;M&gt; + <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + 'static,</div></h4></section></summary><div class="docblock"><p>Creates a new thread-local task.</p>
<p>This function is same as <a href="fn.spawn.html" title="fn async_task::spawn"><code>spawn()</code></a>, except it does not require <a href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Send.html" title="trait core::marker::Send"><code>Send</code></a> on <code>future</code>. If the
<a href="struct.Runnable.html" title="struct async_task::Runnable"><code>Runnable</code></a> is used or dropped on another thread, a panic will occur.</p>
<p>This function is only available when the <code>std</code> feature for this crate is enabled.</p>
<h5 id="examples-4"><a class="doc-anchor" href="#examples-4">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>async_task::{Builder, Runnable};
<span class="kw">use </span>flume::{Receiver, Sender};
<span class="kw">use </span>std::rc::Rc;
<span class="macro">thread_local!</span> {
<span class="comment">// A queue that holds scheduled tasks.
</span><span class="kw">static </span>QUEUE: (Sender&lt;Runnable&gt;, Receiver&lt;Runnable&gt;) = flume::unbounded();
}
<span class="comment">// Make a non-Send future.
</span><span class="kw">let </span>msg: Rc&lt;str&gt; = <span class="string">"Hello, world!"</span>.into();
<span class="kw">let </span>future = <span class="kw">async move </span>{
<span class="macro">println!</span>(<span class="string">"{}"</span>, msg);
};
<span class="comment">// A function that schedules the task when it gets woken up.
</span><span class="kw">let </span>s = QUEUE.with(|(s, <span class="kw">_</span>)| s.clone());
<span class="kw">let </span>schedule = <span class="kw">move </span>|runnable| s.send(runnable).unwrap();
<span class="comment">// Create a task with the future and the schedule function.
</span><span class="kw">let </span>(runnable, task) = Builder::new().spawn_local(<span class="kw">move </span>|()| future, schedule);</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.spawn_unchecked" class="method"><a class="src rightside" href="../src/async_task/runnable.rs.html#504-533">Source</a><h4 class="code-header">pub unsafe fn <a href="#method.spawn_unchecked" class="fn">spawn_unchecked</a>&lt;'a, F, Fut, S&gt;(
self,
future: F,
schedule: S,
) -&gt; (<a class="struct" href="struct.Runnable.html" title="struct async_task::Runnable">Runnable</a>&lt;M&gt;, <a class="struct" href="struct.Task.html" title="struct async_task::Task">Task</a>&lt;Fut::<a class="associatedtype" href="https://doc.rust-lang.org/1.84.0/core/future/future/trait.Future.html#associatedtype.Output" title="type core::future::future::Future::Output">Output</a>, M&gt;)<div class="where">where
F: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;'a M</a>) -&gt; Fut,
Fut: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a> + 'a,
S: <a class="trait" href="trait.Schedule.html" title="trait async_task::Schedule">Schedule</a>&lt;M&gt;,
M: 'a,</div></h4></section></summary><div class="docblock"><p>Creates a new task without <a href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Send.html" title="trait core::marker::Send"><code>Send</code></a>, <a href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Sync.html" title="trait core::marker::Sync"><code>Sync</code></a>, and <code>'static</code> bounds.</p>
<p>This function is same as <a href="fn.spawn.html" title="fn async_task::spawn"><code>spawn()</code></a>, except it does not require <a href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Send.html" title="trait core::marker::Send"><code>Send</code></a>, <a href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Sync.html" title="trait core::marker::Sync"><code>Sync</code></a>, and
<code>'static</code> on <code>future</code> and <code>schedule</code>.</p>
<h5 id="safety"><a class="doc-anchor" href="#safety">§</a>Safety</h5>
<ul>
<li>If <code>Fut</code> is not <a href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Send.html" title="trait core::marker::Send"><code>Send</code></a>, its <a href="struct.Runnable.html" title="struct async_task::Runnable"><code>Runnable</code></a> must be used and dropped on the original
thread.</li>
<li>If <code>Fut</code> is not <code>'static</code>, borrowed non-metadata variables must outlive its <a href="struct.Runnable.html" title="struct async_task::Runnable"><code>Runnable</code></a>.</li>
<li>If <code>schedule</code> is not <a href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Send.html" title="trait core::marker::Send"><code>Send</code></a> and <a href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Sync.html" title="trait core::marker::Sync"><code>Sync</code></a>, all instances of the <a href="struct.Runnable.html" title="struct async_task::Runnable"><code>Runnable</code></a>s <a href="https://doc.rust-lang.org/1.84.0/core/task/wake/struct.Waker.html" title="struct core::task::wake::Waker"><code>Waker</code></a>
must be used and dropped on the original thread.</li>
<li>If <code>schedule</code> is not <code>'static</code>, borrowed variables must outlive all instances of the
<a href="struct.Runnable.html" title="struct async_task::Runnable"><code>Runnable</code></a>s <a href="https://doc.rust-lang.org/1.84.0/core/task/wake/struct.Waker.html" title="struct core::task::wake::Waker"><code>Waker</code></a>.</li>
</ul>
<h5 id="examples-5"><a class="doc-anchor" href="#examples-5">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>async_task::Builder;
<span class="comment">// The future inside the task.
</span><span class="kw">let </span>future = <span class="kw">async </span>{
<span class="macro">println!</span>(<span class="string">"Hello, world!"</span>);
};
<span class="comment">// If the task gets woken up, it will be sent into this channel.
</span><span class="kw">let </span>(s, r) = flume::unbounded();
<span class="kw">let </span>schedule = <span class="kw">move </span>|runnable| s.send(runnable).unwrap();
<span class="comment">// Create a task with the future and the schedule function.
</span><span class="kw">let </span>(runnable, task) = <span class="kw">unsafe </span>{ Builder::new().spawn_unchecked(<span class="kw">move </span>|()| future, schedule) };</code></pre></div>
</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Builder%3CM%3E" class="impl"><a class="src rightside" href="../src/async_task/runnable.rs.html#26">Source</a><a href="#impl-Debug-for-Builder%3CM%3E" class="anchor">§</a><h3 class="code-header">impl&lt;M: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a>&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Builder.html" title="struct async_task::Builder">Builder</a>&lt;M&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/async_task/runnable.rs.html#26">Source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/1.84.0/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/1.84.0/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Default-for-Builder%3CM%3E" class="impl"><a class="src rightside" href="../src/async_task/runnable.rs.html#36-40">Source</a><a href="#impl-Default-for-Builder%3CM%3E" class="anchor">§</a><h3 class="code-header">impl&lt;M: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/default/trait.Default.html" title="trait core::default::Default">Default</a>&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.Builder.html" title="struct async_task::Builder">Builder</a>&lt;M&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.default" class="method trait-impl"><a class="src rightside" href="../src/async_task/runnable.rs.html#37-39">Source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -&gt; Self</h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/1.84.0/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Builder%3CM%3E" class="impl"><a href="#impl-Freeze-for-Builder%3CM%3E" class="anchor">§</a><h3 class="code-header">impl&lt;M&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.Builder.html" title="struct async_task::Builder">Builder</a>&lt;M&gt;<div class="where">where
M: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a>,</div></h3></section><section id="impl-RefUnwindSafe-for-Builder%3CM%3E" class="impl"><a href="#impl-RefUnwindSafe-for-Builder%3CM%3E" class="anchor">§</a><h3 class="code-header">impl&lt;M&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Builder.html" title="struct async_task::Builder">Builder</a>&lt;M&gt;<div class="where">where
M: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</div></h3></section><section id="impl-Send-for-Builder%3CM%3E" class="impl"><a href="#impl-Send-for-Builder%3CM%3E" class="anchor">§</a><h3 class="code-header">impl&lt;M&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Builder.html" title="struct async_task::Builder">Builder</a>&lt;M&gt;<div class="where">where
M: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</div></h3></section><section id="impl-Sync-for-Builder%3CM%3E" class="impl"><a href="#impl-Sync-for-Builder%3CM%3E" class="anchor">§</a><h3 class="code-header">impl&lt;M&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Builder.html" title="struct async_task::Builder">Builder</a>&lt;M&gt;<div class="where">where
M: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</div></h3></section><section id="impl-Unpin-for-Builder%3CM%3E" class="impl"><a href="#impl-Unpin-for-Builder%3CM%3E" class="anchor">§</a><h3 class="code-header">impl&lt;M&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Builder.html" title="struct async_task::Builder">Builder</a>&lt;M&gt;<div class="where">where
M: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,</div></h3></section><section id="impl-UnwindSafe-for-Builder%3CM%3E" class="impl"><a href="#impl-UnwindSafe-for-Builder%3CM%3E" class="anchor">§</a><h3 class="code-header">impl&lt;M&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Builder.html" title="struct async_task::Builder">Builder</a>&lt;M&gt;<div class="where">where
M: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>,</div></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/any.rs.html#138">Source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/any.rs.html#139">Source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.84.0/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/1.84.0/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/borrow.rs.html#209">Source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
T: ?<a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/borrow.rs.html#211">Source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.84.0/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/borrow.rs.html#217">Source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
T: ?<a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/borrow.rs.html#218">Source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.84.0/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#765">Source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/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="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#768">Source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#748-750">Source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#758">Source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.Into.html#tymethod.into" class="fn">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/1.84.0/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#805-807">Source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#809">Source</a><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#812">Source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/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/1.84.0/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/1.84.0/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="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#790-792">Source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#794">Source</a><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/1.84.0/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/1.84.0/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#797">Source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/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/1.84.0/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/1.84.0/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></body></html>