blob: ffbd4618fb843d0c4bd2a36521d589d80716a823 [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="This type provides MUTual EXclusion based on spinning."><meta name="keywords" content="rust, rustlang, rust-lang, Mutex"><title>Mutex in spin - 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="../spin/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="../spin/index.html"><div class="logo-container"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></div></a><h2 class="location"><a href="#">Mutex</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.force_unlock">force_unlock</a></li><li><a href="#method.into_inner">into_inner</a></li><li><a href="#method.lock">lock</a></li><li><a href="#method.new">new</a></li><li><a href="#method.try_lock">try_lock</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Debug-for-Mutex%3CT%3E">Debug</a></li><li><a href="#impl-Default-for-Mutex%3CT%3E">Default</a></li><li><a href="#impl-Send-for-Mutex%3CT%3E">Send</a></li><li><a href="#impl-Sync-for-Mutex%3CT%3E">Sync</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Mutex%3CT%3E">!RefUnwindSafe</a></li><li><a href="#impl-Unpin-for-Mutex%3CT%3E">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Mutex%3CT%3E">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Mutex%3CT%3E">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Mutex%3CT%3E">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Mutex%3CT%3E">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-Mutex%3CT%3E">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-Mutex%3CT%3E">Into&lt;U&gt;</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Mutex%3CT%3E">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-Mutex%3CT%3E">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In spin</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">spin</a>::<wbr><a class="struct" href="#">Mutex</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/spin/mutex.rs.html#72-76">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 Mutex&lt;T:&nbsp;?Sized&gt; { /* private fields */ }</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>This type provides MUTual EXclusion based on spinning.</p>
<h2 id="description"><a href="#description">Description</a></h2>
<p>The behaviour of these lock is similar to their namesakes in <code>std::sync</code>. they
differ on the following:</p>
<ul>
<li>The lock will not be poisoned in case of failure;</li>
</ul>
<h2 id="simple-examples"><a href="#simple-examples">Simple examples</a></h2>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>spin;
<span class="kw">let </span>spin_mutex = spin::Mutex::new(<span class="number">0</span>);
<span class="comment">// Modify the data
</span>{
<span class="kw">let </span><span class="kw-2">mut </span>data = spin_mutex.lock();
<span class="kw-2">*</span>data = <span class="number">2</span>;
}
<span class="comment">// Read the data
</span><span class="kw">let </span>answer =
{
<span class="kw">let </span>data = spin_mutex.lock();
<span class="kw-2">*</span>data
};
<span class="macro">assert_eq!</span>(answer, <span class="number">2</span>);</code></pre></div>
<h2 id="thread-safety-example"><a href="#thread-safety-example">Thread-safety example</a></h2>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>spin;
<span class="kw">use </span>std::sync::{Arc, Barrier};
<span class="kw">let </span>numthreads = <span class="number">1000</span>;
<span class="kw">let </span>spin_mutex = Arc::new(spin::Mutex::new(<span class="number">0</span>));
<span class="comment">// We use a barrier to ensure the readout happens after all writing
</span><span class="kw">let </span>barrier = Arc::new(Barrier::new(numthreads + <span class="number">1</span>));
<span class="kw">for _ in </span>(<span class="number">0</span>..numthreads)
{
<span class="kw">let </span>my_barrier = barrier.clone();
<span class="kw">let </span>my_lock = spin_mutex.clone();
std::thread::spawn(<span class="kw">move</span>||
{
<span class="kw">let </span><span class="kw-2">mut </span>guard = my_lock.lock();
<span class="kw-2">*</span>guard += <span class="number">1</span>;
<span class="comment">// Release the lock to prevent a deadlock
</span>drop(guard);
my_barrier.wait();
});
}
barrier.wait();
<span class="kw">let </span>answer = { <span class="kw-2">*</span>spin_mutex.lock() };
<span class="macro">assert_eq!</span>(answer, numthreads);</code></pre></div>
</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-Mutex%3CT%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/spin/mutex.rs.html#92-125">source</a><a href="#impl-Mutex%3CT%3E" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="struct" href="struct.Mutex.html" title="struct spin::Mutex">Mutex</a>&lt;T&gt;</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/spin/mutex.rs.html#109-116">source</a><h4 class="code-header">pub const fn <a href="#method.new" class="fnname">new</a>(user_data: T) -&gt; <a class="struct" href="struct.Mutex.html" title="struct spin::Mutex">Mutex</a>&lt;T&gt;</h4></section></summary><div class="docblock"><p>Creates a new spinlock wrapping the supplied data.</p>
<p>May be used statically:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>spin;
<span class="kw">static </span>MUTEX: spin::Mutex&lt;()&gt; = spin::Mutex::new(());
<span class="kw">fn </span>demo() {
<span class="kw">let </span>lock = MUTEX.lock();
<span class="comment">// do something with lock
</span>drop(lock);
}</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_inner" class="method has-srclink"><a class="srclink rightside" href="../src/spin/mutex.rs.html#119-124">source</a><h4 class="code-header">pub fn <a href="#method.into_inner" class="fnname">into_inner</a>(self) -&gt; T</h4></section></summary><div class="docblock"><p>Consumes this mutex, returning the underlying data.</p>
</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Mutex%3CT%3E-1" class="impl has-srclink"><a class="srclink rightside" href="../src/spin/mutex.rs.html#127-195">source</a><a href="#impl-Mutex%3CT%3E-1" class="anchor"></a><h3 class="code-header">impl&lt;T:&nbsp;?Sized&gt; <a class="struct" href="struct.Mutex.html" title="struct spin::Mutex">Mutex</a>&lt;T&gt;</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.lock" class="method has-srclink"><a class="srclink rightside" href="../src/spin/mutex.rs.html#156-164">source</a><h4 class="code-header">pub fn <a href="#method.lock" class="fnname">lock</a>(&amp;self) -&gt; <a class="struct" href="struct.MutexGuard.html" title="struct spin::MutexGuard">MutexGuard</a>&lt;'_, T&gt;</h4></section></summary><div class="docblock"><p>Locks the spinlock and returns a guard.</p>
<p>The returned value may be dereferenced for data access
and the lock will be dropped when the guard falls out of scope.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>mylock = spin::Mutex::new(<span class="number">0</span>);
{
<span class="kw">let </span><span class="kw-2">mut </span>data = mylock.lock();
<span class="comment">// The lock is now locked and the data can be accessed
</span><span class="kw-2">*</span>data += <span class="number">1</span>;
<span class="comment">// The lock is implicitly dropped
</span>}
</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.force_unlock" class="method has-srclink"><a class="srclink rightside" href="../src/spin/mutex.rs.html#173-175">source</a><h4 class="code-header">pub unsafe fn <a href="#method.force_unlock" class="fnname">force_unlock</a>(&amp;self)</h4></section></summary><div class="docblock"><p>Force unlock the spinlock.</p>
<p>This is <em>extremely</em> unsafe if the lock is not held by the current
thread. However, this can be useful in some instances for exposing the
lock to FFI that doesn’t know how to deal with RAII.</p>
<p>If the lock isn’t held, this is a no-op.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_lock" class="method has-srclink"><a class="srclink rightside" href="../src/spin/mutex.rs.html#179-194">source</a><h4 class="code-header">pub fn <a href="#method.try_lock" class="fnname">try_lock</a>(&amp;self) -&gt; Option&lt;<a class="struct" href="struct.MutexGuard.html" title="struct spin::MutexGuard">MutexGuard</a>&lt;'_, T&gt;&gt;</h4></section></summary><div class="docblock"><p>Tries to lock the mutex. If it is already locked, it will return None. Otherwise it returns
a guard within Some.</p>
</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-Mutex%3CT%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/spin/mutex.rs.html#197-209">source</a><a href="#impl-Debug-for-Mutex%3CT%3E" class="anchor"></a><h3 class="code-header">impl&lt;T:&nbsp;?Sized + Debug&gt; Debug for <a class="struct" href="struct.Mutex.html" title="struct spin::Mutex">Mutex</a>&lt;T&gt;</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/spin/mutex.rs.html#199-208">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-Default-for-Mutex%3CT%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/spin/mutex.rs.html#211-215">source</a><a href="#impl-Default-for-Mutex%3CT%3E" class="anchor"></a><h3 class="code-header">impl&lt;T:&nbsp;?Sized + Default&gt; Default for <a class="struct" href="struct.Mutex.html" title="struct spin::Mutex">Mutex</a>&lt;T&gt;</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.default" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/spin/mutex.rs.html#212-214">source</a><a href="#method.default" class="anchor"></a><h4 class="code-header">fn <a class="fnname">default</a>() -&gt; <a class="struct" href="struct.Mutex.html" title="struct spin::Mutex">Mutex</a>&lt;T&gt;</h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a>Read more</a></div></details></div></details><section id="impl-Send-for-Mutex%3CT%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/spin/mutex.rs.html#90">source</a><a href="#impl-Send-for-Mutex%3CT%3E" class="anchor"></a><h3 class="code-header">impl&lt;T:&nbsp;?Sized + Send&gt; Send for <a class="struct" href="struct.Mutex.html" title="struct spin::Mutex">Mutex</a>&lt;T&gt;</h3></section><section id="impl-Sync-for-Mutex%3CT%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/spin/mutex.rs.html#89">source</a><a href="#impl-Sync-for-Mutex%3CT%3E" class="anchor"></a><h3 class="code-header">impl&lt;T:&nbsp;?Sized + Send&gt; Sync for <a class="struct" href="struct.Mutex.html" title="struct spin::Mutex">Mutex</a>&lt;T&gt;</h3></section></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-Mutex%3CT%3E" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Mutex%3CT%3E" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; !RefUnwindSafe for <a class="struct" href="struct.Mutex.html" title="struct spin::Mutex">Mutex</a>&lt;T&gt;</h3></section><section id="impl-Unpin-for-Mutex%3CT%3E" class="impl has-srclink"><a href="#impl-Unpin-for-Mutex%3CT%3E" class="anchor"></a><h3 class="code-header">impl&lt;T:&nbsp;?Sized&gt; Unpin for <a class="struct" href="struct.Mutex.html" title="struct spin::Mutex">Mutex</a>&lt;T&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: Unpin,</span></h3></section><section id="impl-UnwindSafe-for-Mutex%3CT%3E" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Mutex%3CT%3E" class="anchor"></a><h3 class="code-header">impl&lt;T:&nbsp;?Sized&gt; UnwindSafe for <a class="struct" href="struct.Mutex.html" title="struct spin::Mutex">Mutex</a>&lt;T&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: UnwindSafe,</span></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-Mutex%3CT%3E" class="impl has-srclink"><a href="#impl-Any-for-Mutex%3CT%3E" 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-Mutex%3CT%3E" class="impl has-srclink"><a href="#impl-Borrow%3CT%3E-for-Mutex%3CT%3E" 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-Mutex%3CT%3E" class="impl has-srclink"><a href="#impl-BorrowMut%3CT%3E-for-Mutex%3CT%3E" 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-Mutex%3CT%3E" class="impl has-srclink"><a href="#impl-From%3CT%3E-for-Mutex%3CT%3E" 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-Mutex%3CT%3E" class="impl has-srclink"><a href="#impl-Into%3CU%3E-for-Mutex%3CT%3E" 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-Mutex%3CT%3E" class="impl has-srclink"><a href="#impl-TryFrom%3CU%3E-for-Mutex%3CT%3E" 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-Mutex%3CT%3E" class="impl has-srclink"><a href="#impl-TryInto%3CU%3E-for-Mutex%3CT%3E" 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="spin" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.66.0-nightly (5c8bff74b 2022-10-21)" ></div></body></html>