Files
GopherGate/target/doc/crossbeam_utils/sync/struct.Parker.html
2026-02-26 12:00:21 -05:00

105 lines
33 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A thread parking primitive."><title>Parker in crossbeam_utils::sync - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="crossbeam_utils" data-themes="" data-resource-suffix="" data-rustdoc-version="1.93.1 (01f6ddf75 2026-02-11) (Arch Linux rust 1:1.93.1-1)" data-channel="1.93.1" data-search-js="search-9e2438ea.js" data-stringdex-js="stringdex-a3946164.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a410ff4d.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><rustdoc-topbar><h2><a href="#">Parker</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../crossbeam_utils/index.html">crossbeam_<wbr>utils</a><span class="version">0.8.21</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Parker</a></h2><h3><a href="#">Sections</a></h3><ul class="block top-toc"><li><a href="#examples" title="Examples">Examples</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.from_raw" title="from_raw">from_raw</a></li><li><a href="#method.into_raw" title="into_raw">into_raw</a></li><li><a href="#method.new" title="new">new</a></li><li><a href="#method.park" title="park">park</a></li><li><a href="#method.park_deadline" title="park_deadline">park_deadline</a></li><li><a href="#method.park_timeout" title="park_timeout">park_timeout</a></li><li><a href="#method.unparker" title="unparker">unparker</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Debug-for-Parker" title="Debug">Debug</a></li><li><a href="#impl-Default-for-Parker" title="Default">Default</a></li><li><a href="#impl-Send-for-Parker" title="Send">Send</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Sync-for-Parker" title="!Sync">!Sync</a></li><li><a href="#impl-Freeze-for-Parker" title="Freeze">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-Parker" title="RefUnwindSafe">RefUnwindSafe</a></li><li><a href="#impl-Unpin-for-Parker" title="Unpin">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Parker" 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><a href="index.html">In crossbeam_<wbr>utils::<wbr>sync</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">crossbeam_utils</a>::<wbr><a href="index.html">sync</a></div><h1>Struct <span class="struct">Parker</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../../src/crossbeam_utils/sync/parker.rs.html#53-56">Source</a> </span></div><pre class="rust item-decl"><code>pub struct Parker { <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 thread parking primitive.</p>
<p>Conceptually, each <code>Parker</code> has an associated token which is initially not present:</p>
<ul>
<li>
<p>The <a href="struct.Parker.html#method.park" title="method crossbeam_utils::sync::Parker::park"><code>park</code></a> method blocks the current thread unless or until the token is available, at
which point it automatically consumes the token.</p>
</li>
<li>
<p>The <a href="struct.Parker.html#method.park_timeout" title="method crossbeam_utils::sync::Parker::park_timeout"><code>park_timeout</code></a> and <a href="struct.Parker.html#method.park_deadline" title="method crossbeam_utils::sync::Parker::park_deadline"><code>park_deadline</code></a> methods work the same as <a href="struct.Parker.html#method.park" title="method crossbeam_utils::sync::Parker::park"><code>park</code></a>, but block for
a specified maximum time.</p>
</li>
<li>
<p>The <a href="struct.Unparker.html#method.unpark" title="method crossbeam_utils::sync::Unparker::unpark"><code>unpark</code></a> method atomically makes the token available if it wasnt already. Because the
token is initially absent, <a href="struct.Unparker.html#method.unpark" title="method crossbeam_utils::sync::Unparker::unpark"><code>unpark</code></a> followed by <a href="struct.Parker.html#method.park" title="method crossbeam_utils::sync::Parker::park"><code>park</code></a> will result in the second call
returning immediately.</p>
</li>
</ul>
<p>In other words, each <code>Parker</code> acts a bit like a spinlock that can be locked and unlocked using
<a href="struct.Parker.html#method.park" title="method crossbeam_utils::sync::Parker::park"><code>park</code></a> and <a href="struct.Unparker.html#method.unpark" title="method crossbeam_utils::sync::Unparker::unpark"><code>unpark</code></a>.</p>
<h2 id="examples"><a class="doc-anchor" href="#examples">§</a>Examples</h2>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::thread;
<span class="kw">use </span>std::time::Duration;
<span class="kw">use </span>crossbeam_utils::sync::Parker;
<span class="kw">let </span>p = Parker::new();
<span class="kw">let </span>u = p.unparker().clone();
<span class="comment">// Make the token available.
</span>u.unpark();
<span class="comment">// Wakes up immediately and consumes the token.
</span>p.park();
thread::spawn(<span class="kw">move </span>|| {
thread::sleep(Duration::from_millis(<span class="number">500</span>));
u.unpark();
});
<span class="comment">// Wakes up when `u.unpark()` provides the token.
</span>p.park();</code></pre></div></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-Parker" class="impl"><a class="src rightside" href="../../src/crossbeam_utils/sync/parker.rs.html#75-208">Source</a><a href="#impl-Parker" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Parker.html" title="struct crossbeam_utils::sync::Parker">Parker</a></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/crossbeam_utils/sync/parker.rs.html#86-88">Source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>() -&gt; <a class="struct" href="struct.Parker.html" title="struct crossbeam_utils::sync::Parker">Parker</a></h4></section></summary><div class="docblock"><p>Creates a new <code>Parker</code>.</p>
<h5 id="examples-1"><a class="doc-anchor" href="#examples-1">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>crossbeam_utils::sync::Parker;
<span class="kw">let </span>p = Parker::new();</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.park" class="method"><a class="src rightside" href="../../src/crossbeam_utils/sync/parker.rs.html#106-108">Source</a><h4 class="code-header">pub fn <a href="#method.park" class="fn">park</a>(&amp;self)</h4></section></summary><div class="docblock"><p>Blocks the current thread until the token is made available.</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>crossbeam_utils::sync::Parker;
<span class="kw">let </span>p = Parker::new();
<span class="kw">let </span>u = p.unparker().clone();
<span class="comment">// Make the token available.
</span>u.unpark();
<span class="comment">// Wakes up immediately and consumes the token.
</span>p.park();</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.park_timeout" class="method"><a class="src rightside" href="../../src/crossbeam_utils/sync/parker.rs.html#123-128">Source</a><h4 class="code-header">pub fn <a href="#method.park_timeout" class="fn">park_timeout</a>(&amp;self, timeout: <a class="struct" href="https://doc.rust-lang.org/1.93.1/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>)</h4></section></summary><div class="docblock"><p>Blocks the current thread until the token is made available, but only for a limited time.</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>std::time::Duration;
<span class="kw">use </span>crossbeam_utils::sync::Parker;
<span class="kw">let </span>p = Parker::new();
<span class="comment">// Waits for the token to become available, but will not wait longer than 500 ms.
</span>p.park_timeout(Duration::from_millis(<span class="number">500</span>));</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.park_deadline" class="method"><a class="src rightside" href="../../src/crossbeam_utils/sync/parker.rs.html#144-146">Source</a><h4 class="code-header">pub fn <a href="#method.park_deadline" class="fn">park_deadline</a>(&amp;self, deadline: <a class="struct" href="https://doc.rust-lang.org/1.93.1/std/time/struct.Instant.html" title="struct std::time::Instant">Instant</a>)</h4></section></summary><div class="docblock"><p>Blocks the current thread until the token is made available, or until a certain deadline.</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>std::time::{Duration, Instant};
<span class="kw">use </span>crossbeam_utils::sync::Parker;
<span class="kw">let </span>p = Parker::new();
<span class="kw">let </span>deadline = Instant::now() + Duration::from_millis(<span class="number">500</span>);
<span class="comment">// Waits for the token to become available, but will not wait longer than 500 ms.
</span>p.park_deadline(deadline);</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.unparker" class="method"><a class="src rightside" href="../../src/crossbeam_utils/sync/parker.rs.html#168-170">Source</a><h4 class="code-header">pub fn <a href="#method.unparker" class="fn">unparker</a>(&amp;self) -&gt; &amp;<a class="struct" href="struct.Unparker.html" title="struct crossbeam_utils::sync::Unparker">Unparker</a></h4></section></summary><div class="docblock"><p>Returns a reference to an associated <a href="struct.Unparker.html" title="struct crossbeam_utils::sync::Unparker"><code>Unparker</code></a>.</p>
<p>The returned <a href="struct.Unparker.html" title="struct crossbeam_utils::sync::Unparker"><code>Unparker</code></a> doesnt have to be used by reference - it can also be cloned.</p>
<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>crossbeam_utils::sync::Parker;
<span class="kw">let </span>p = Parker::new();
<span class="kw">let </span>u = p.unparker().clone();
<span class="comment">// Make the token available.
</span>u.unpark();
<span class="comment">// Wakes up immediately and consumes the token.
</span>p.park();</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.into_raw" class="method"><a class="src rightside" href="../../src/crossbeam_utils/sync/parker.rs.html#183-185">Source</a><h4 class="code-header">pub fn <a href="#method.into_raw" class="fn">into_raw</a>(this: <a class="struct" href="struct.Parker.html" title="struct crossbeam_utils::sync::Parker">Parker</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.pointer.html">*const </a><a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.unit.html">()</a></h4></section></summary><div class="docblock"><p>Converts a <code>Parker</code> into a raw pointer.</p>
<h5 id="examples-6"><a class="doc-anchor" href="#examples-6">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>crossbeam_utils::sync::Parker;
<span class="kw">let </span>p = Parker::new();
<span class="kw">let </span>raw = Parker::into_raw(p);</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.from_raw" class="method"><a class="src rightside" href="../../src/crossbeam_utils/sync/parker.rs.html#202-207">Source</a><h4 class="code-header">pub unsafe fn <a href="#method.from_raw" class="fn">from_raw</a>(ptr: <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.pointer.html">*const </a><a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.unit.html">()</a>) -&gt; <a class="struct" href="struct.Parker.html" title="struct crossbeam_utils::sync::Parker">Parker</a></h4></section></summary><div class="docblock"><p>Converts a raw pointer into a <code>Parker</code>.</p>
<h5 id="safety"><a class="doc-anchor" href="#safety">§</a>Safety</h5>
<p>This method is safe to use only with pointers returned by <a href="struct.Parker.html#method.into_raw" title="associated function crossbeam_utils::sync::Parker::into_raw"><code>Parker::into_raw</code></a>.</p>
<h5 id="examples-7"><a class="doc-anchor" href="#examples-7">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>crossbeam_utils::sync::Parker;
<span class="kw">let </span>p = Parker::new();
<span class="kw">let </span>raw = Parker::into_raw(p);
<span class="kw">let </span>p = <span class="kw">unsafe </span>{ Parker::from_raw(raw) };</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-Parker" class="impl"><a class="src rightside" href="../../src/crossbeam_utils/sync/parker.rs.html#210-214">Source</a><a href="#impl-Debug-for-Parker" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Parker.html" title="struct crossbeam_utils::sync::Parker">Parker</a></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/crossbeam_utils/sync/parker.rs.html#211-213">Source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/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.93.1/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.93.1/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.93.1/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-Parker" class="impl"><a class="src rightside" href="../../src/crossbeam_utils/sync/parker.rs.html#60-73">Source</a><a href="#impl-Default-for-Parker" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.Parker.html" title="struct crossbeam_utils::sync::Parker">Parker</a></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/crossbeam_utils/sync/parker.rs.html#61-72">Source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/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.93.1/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details><section id="impl-Send-for-Parker" class="impl"><a class="src rightside" href="../../src/crossbeam_utils/sync/parker.rs.html#58">Source</a><a href="#impl-Send-for-Parker" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Parker.html" title="struct crossbeam_utils::sync::Parker">Parker</a></h3></section></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-Parker" class="impl"><a href="#impl-Freeze-for-Parker" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.Parker.html" title="struct crossbeam_utils::sync::Parker">Parker</a></h3></section><section id="impl-RefUnwindSafe-for-Parker" class="impl"><a href="#impl-RefUnwindSafe-for-Parker" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Parker.html" title="struct crossbeam_utils::sync::Parker">Parker</a></h3></section><section id="impl-Sync-for-Parker" class="impl"><a href="#impl-Sync-for-Parker" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Parker.html" title="struct crossbeam_utils::sync::Parker">Parker</a></h3></section><section id="impl-Unpin-for-Parker" class="impl"><a href="#impl-Unpin-for-Parker" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Parker.html" title="struct crossbeam_utils::sync::Parker">Parker</a></h3></section><section id="impl-UnwindSafe-for-Parker" class="impl"><a href="#impl-UnwindSafe-for-Parker" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Parker.html" title="struct crossbeam_utils::sync::Parker">Parker</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/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.93.1/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.93.1/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.93.1/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.93.1/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.93.1/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.93.1/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.93.1/src/core/borrow.rs.html#212">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.93.1/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.93.1/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.93.1/src/core/borrow.rs.html#214">Source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.93.1/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.93.1/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.93.1/src/core/borrow.rs.html#221">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.93.1/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.93.1/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.93.1/src/core/borrow.rs.html#222">Source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/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.93.1/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.93.1/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.93.1/src/core/convert/mod.rs.html#785">Source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/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.93.1/src/core/convert/mod.rs.html#788">Source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/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.93.1/src/core/convert/mod.rs.html#767-769">Source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/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.93.1/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.93.1/src/core/convert/mod.rs.html#777">Source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/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.93.1/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.93.1/src/core/convert/mod.rs.html#827-829">Source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/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.93.1/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.93.1/src/core/convert/mod.rs.html#831">Source</a><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/1.93.1/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.93.1/src/core/convert/mod.rs.html#834">Source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/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.93.1/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.93.1/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.93.1/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.93.1/src/core/convert/mod.rs.html#811-813">Source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/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.93.1/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.93.1/src/core/convert/mod.rs.html#815">Source</a><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/1.93.1/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.93.1/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.93.1/src/core/convert/mod.rs.html#818">Source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/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.93.1/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.93.1/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.93.1/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>