blob: 69e4172b463aeafe443a21b48077f5bc9af5b2d9 [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="A thread-safe cell that can be written to only once."><meta name="keywords" content="rust, rustlang, rust-lang, OnceCell"><title>OnceCell in tokio::sync - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" href="../../normalize.css"><link rel="stylesheet" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" href="../../ayu.css" disabled><link rel="stylesheet" href="../../dark.css" disabled><link rel="stylesheet" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../main.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button><a class="sidebar-logo" href="../../tokio/index.html"><div class="logo-container"><img class="rust-logo" src="../../rust-logo.svg" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../tokio/index.html"><div class="logo-container"><img class="rust-logo" src="../../rust-logo.svg" alt="logo"></div></a><h2 class="location"><a href="#">OnceCell</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.get">get</a></li><li><a href="#method.get_mut">get_mut</a></li><li><a href="#method.get_or_init">get_or_init</a></li><li><a href="#method.get_or_try_init">get_or_try_init</a></li><li><a href="#method.initialized">initialized</a></li><li><a href="#method.into_inner">into_inner</a></li><li><a href="#method.new">new</a></li><li><a href="#method.new_with">new_with</a></li><li><a href="#method.set">set</a></li><li><a href="#method.take">take</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-OnceCell%3CT%3E">Clone</a></li><li><a href="#impl-Debug-for-OnceCell%3CT%3E">Debug</a></li><li><a href="#impl-Default-for-OnceCell%3CT%3E">Default</a></li><li><a href="#impl-Drop-for-OnceCell%3CT%3E">Drop</a></li><li><a href="#impl-Eq-for-OnceCell%3CT%3E">Eq</a></li><li><a href="#impl-From%3CT%3E-for-OnceCell%3CT%3E">From&lt;T&gt;</a></li><li><a href="#impl-PartialEq%3COnceCell%3CT%3E%3E-for-OnceCell%3CT%3E">PartialEq&lt;OnceCell&lt;T&gt;&gt;</a></li><li><a href="#impl-Send-for-OnceCell%3CT%3E">Send</a></li><li><a href="#impl-Sync-for-OnceCell%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-OnceCell%3CT%3E">!RefUnwindSafe</a></li><li><a href="#impl-Unpin-for-OnceCell%3CT%3E">Unpin</a></li><li><a href="#impl-UnwindSafe-for-OnceCell%3CT%3E">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-OnceCell%3CT%3E">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-OnceCell%3CT%3E">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-OnceCell%3CT%3E">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3C!%3E-for-OnceCell%3CT%3E">From&lt;!&gt;</a></li><li><a href="#impl-From%3CT%3E-for-OnceCell%3CT%3E-1">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-OnceCell%3CT%3E">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-OnceCell%3CT%3E">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-OnceCell%3CT%3E">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-OnceCell%3CT%3E">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In tokio::sync</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../index.html">tokio</a>::<wbr><a href="index.html">sync</a>::<wbr><a class="struct" href="#">OnceCell</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/tokio/sync/once_cell.rs.html#70-74">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 OnceCell&lt;T&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>A thread-safe cell that can be written to only once.</p>
<p>A <code>OnceCell</code> is typically used for global variables that need to be
initialized once on first use, but need no further changes. The <code>OnceCell</code>
in Tokio allows the initialization procedure to be asynchronous.</p>
<h2 id="examples"><a href="#examples">Examples</a></h2>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>tokio::sync::OnceCell;
<span class="kw">async fn </span>some_computation() -&gt; u32 {
<span class="number">1 </span>+ <span class="number">1
</span>}
<span class="kw">static </span>ONCE: OnceCell&lt;u32&gt; = OnceCell::const_new();
<span class="attribute">#[tokio::main]
</span><span class="kw">async fn </span>main() {
<span class="kw">let </span>result = ONCE.get_or_init(some_computation).<span class="kw">await</span>;
<span class="macro">assert_eq!</span>(<span class="kw-2">*</span>result, <span class="number">2</span>);
}</code></pre></div>
<p>It is often useful to write a wrapper method for accessing the value.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>tokio::sync::OnceCell;
<span class="kw">static </span>ONCE: OnceCell&lt;u32&gt; = OnceCell::const_new();
<span class="kw">async fn </span>get_global_integer() -&gt; <span class="kw-2">&amp;</span><span class="lifetime">&#39;static </span>u32 {
ONCE.get_or_init(|| <span class="kw">async </span>{
<span class="number">1 </span>+ <span class="number">1
</span>}).<span class="kw">await
</span>}
<span class="attribute">#[tokio::main]
</span><span class="kw">async fn </span>main() {
<span class="kw">let </span>result = get_global_integer().<span class="kw">await</span>;
<span class="macro">assert_eq!</span>(<span class="kw-2">*</span>result, <span class="number">2</span>);
}</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-OnceCell%3CT%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/tokio/sync/once_cell.rs.html#127-402">source</a><a href="#impl-OnceCell%3CT%3E" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="struct" href="struct.OnceCell.html" title="struct tokio::sync::OnceCell">OnceCell</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/tokio/sync/once_cell.rs.html#129-135">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fnname">new</a>() -&gt; Self</h4></section></summary><div class="docblock"><p>Creates a new empty <code>OnceCell</code> instance.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new_with" class="method has-srclink"><a class="srclink rightside" href="../../src/tokio/sync/once_cell.rs.html#142-148">source</a><h4 class="code-header">pub fn <a href="#method.new_with" class="fnname">new_with</a>(value: Option&lt;T&gt;) -&gt; Self</h4></section></summary><div class="docblock"><p>Creates a new <code>OnceCell</code> that contains the provided value, if any.</p>
<p>If the <code>Option</code> is <code>None</code>, this is equivalent to <code>OnceCell::new</code>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.initialized" class="method has-srclink"><a class="srclink rightside" href="../../src/tokio/sync/once_cell.rs.html#186-190">source</a><h4 class="code-header">pub fn <a href="#method.initialized" class="fnname">initialized</a>(&amp;self) -&gt; bool</h4></section></summary><div class="docblock"><p>Returns <code>true</code> if the <code>OnceCell</code> currently contains a value, and <code>false</code>
otherwise.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get" class="method has-srclink"><a class="srclink rightside" href="../../src/tokio/sync/once_cell.rs.html#226-232">source</a><h4 class="code-header">pub fn <a href="#method.get" class="fnname">get</a>(&amp;self) -&gt; Option&lt;&amp;T&gt;</h4></section></summary><div class="docblock"><p>Returns a reference to the value currently stored in the <code>OnceCell</code>, or
<code>None</code> if the <code>OnceCell</code> is empty.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_mut" class="method has-srclink"><a class="srclink rightside" href="../../src/tokio/sync/once_cell.rs.html#240-246">source</a><h4 class="code-header">pub fn <a href="#method.get_mut" class="fnname">get_mut</a>(&amp;mut self) -&gt; Option&lt;&amp;mut T&gt;</h4></section></summary><div class="docblock"><p>Returns a mutable reference to the value currently stored in the
<code>OnceCell</code>, or <code>None</code> if the <code>OnceCell</code> is empty.</p>
<p>Since this call borrows the <code>OnceCell</code> mutably, it is safe to mutate the
value inside the <code>OnceCell</code> — the mutable borrow statically guarantees
no other references exist.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set" class="method has-srclink"><a class="srclink rightside" href="../../src/tokio/sync/once_cell.rs.html#259-284">source</a><h4 class="code-header">pub fn <a href="#method.set" class="fnname">set</a>(&amp;self, value: T) -&gt; Result&lt;(), <a class="enum" href="enum.SetError.html" title="enum tokio::sync::SetError">SetError</a>&lt;T&gt;&gt;</h4></section></summary><div class="docblock"><p>Sets the value of the <code>OnceCell</code> to the given value if the <code>OnceCell</code> is
empty.</p>
<p>If the <code>OnceCell</code> already has a value, this call will fail with an
<a href="enum.SetError.html#variant.AlreadyInitializedError"><code>SetError::AlreadyInitializedError</code></a>.</p>
<p>If the <code>OnceCell</code> is empty, but some other task is currently trying to
set the value, this call will fail with <a href="enum.SetError.html#variant.InitializingError"><code>SetError::InitializingError</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_or_init" class="method has-srclink"><a class="srclink rightside" href="../../src/tokio/sync/once_cell.rs.html#299-332">source</a><h4 class="code-header">pub async fn <a href="#method.get_or_init" class="fnname">get_or_init</a>&lt;F, Fut&gt;(&amp;self, f: F) -&gt; &amp;T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;F: FnOnce() -&gt; Fut,<br>&nbsp;&nbsp;&nbsp;&nbsp;Fut: Future&lt;Output = T&gt;,</span></h4></section></summary><div class="docblock"><p>Gets the value currently in the <code>OnceCell</code>, or initialize it with the
given asynchronous operation.</p>
<p>If some other task is currently working on initializing the <code>OnceCell</code>,
this call will wait for that other task to finish, then return the value
that the other task produced.</p>
<p>If the provided operation is cancelled or panics, the initialization
attempt is cancelled. If there are other tasks waiting for the value to
be initialized, one of them will start another attempt at initializing
the value.</p>
<p>This will deadlock if <code>f</code> tries to initialize the cell recursively.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_or_try_init" class="method has-srclink"><a class="srclink rightside" href="../../src/tokio/sync/once_cell.rs.html#347-383">source</a><h4 class="code-header">pub async fn <a href="#method.get_or_try_init" class="fnname">get_or_try_init</a>&lt;E, F, Fut&gt;(&amp;self, f: F) -&gt; Result&lt;&amp;T, E&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;F: FnOnce() -&gt; Fut,<br>&nbsp;&nbsp;&nbsp;&nbsp;Fut: Future&lt;Output = Result&lt;T, E&gt;&gt;,</span></h4></section></summary><div class="docblock"><p>Gets the value currently in the <code>OnceCell</code>, or initialize it with the
given asynchronous operation.</p>
<p>If some other task is currently working on initializing the <code>OnceCell</code>,
this call will wait for that other task to finish, then return the value
that the other task produced.</p>
<p>If the provided operation returns an error, is cancelled or panics, the
initialization attempt is cancelled. If there are other tasks waiting
for the value to be initialized, one of them will start another attempt
at initializing the value.</p>
<p>This will deadlock if <code>f</code> tries to initialize the cell recursively.</p>
</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/tokio/sync/once_cell.rs.html#387-395">source</a><h4 class="code-header">pub fn <a href="#method.into_inner" class="fnname">into_inner</a>(self) -&gt; Option&lt;T&gt;</h4></section></summary><div class="docblock"><p>Takes the value from the cell, destroying the cell in the process.
Returns <code>None</code> if the cell is empty.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.take" class="method has-srclink"><a class="srclink rightside" href="../../src/tokio/sync/once_cell.rs.html#399-401">source</a><h4 class="code-header">pub fn <a href="#method.take" class="fnname">take</a>(&amp;mut self) -&gt; Option&lt;T&gt;</h4></section></summary><div class="docblock"><p>Takes ownership of the current value, leaving the cell empty. Returns
<code>None</code> if the cell is empty.</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-Clone-for-OnceCell%3CT%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/tokio/sync/once_cell.rs.html#90-94">source</a><a href="#impl-Clone-for-OnceCell%3CT%3E" class="anchor"></a><h3 class="code-header">impl&lt;T:&nbsp;Clone&gt; Clone for <a class="struct" href="struct.OnceCell.html" title="struct tokio::sync::OnceCell">OnceCell</a>&lt;T&gt;</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/tokio/sync/once_cell.rs.html#91-93">source</a><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a class="fnname">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.OnceCell.html" title="struct tokio::sync::OnceCell">OnceCell</a>&lt;T&gt;</h4></section></summary><div class='docblock'>Returns a copy of the value. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="since rightside" title="Stable since Rust version 1.0.0">1.0.0</span><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">const fn <a class="fnname">clone_from</a>(&amp;mut self, source: &amp;Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-OnceCell%3CT%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/tokio/sync/once_cell.rs.html#82-88">source</a><a href="#impl-Debug-for-OnceCell%3CT%3E" class="anchor"></a><h3 class="code-header">impl&lt;T:&nbsp;Debug&gt; Debug for <a class="struct" href="struct.OnceCell.html" title="struct tokio::sync::OnceCell">OnceCell</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/tokio/sync/once_cell.rs.html#83-87">source</a><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a class="fnname">fmt</a>(&amp;self, fmt: &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-OnceCell%3CT%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/tokio/sync/once_cell.rs.html#76-80">source</a><a href="#impl-Default-for-OnceCell%3CT%3E" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; Default for <a class="struct" href="struct.OnceCell.html" title="struct tokio::sync::OnceCell">OnceCell</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/tokio/sync/once_cell.rs.html#77-79">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.OnceCell.html" title="struct tokio::sync::OnceCell">OnceCell</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><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Drop-for-OnceCell%3CT%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/tokio/sync/once_cell.rs.html#104-113">source</a><a href="#impl-Drop-for-OnceCell%3CT%3E" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; Drop for <a class="struct" href="struct.OnceCell.html" title="struct tokio::sync::OnceCell">OnceCell</a>&lt;T&gt;</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/tokio/sync/once_cell.rs.html#105-112">source</a><a href="#method.drop" class="anchor"></a><h4 class="code-header">fn <a class="fnname">drop</a>(&amp;mut self)</h4></section></summary><div class='docblock'>Executes the destructor for this type. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3CT%3E-for-OnceCell%3CT%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/tokio/sync/once_cell.rs.html#115-125">source</a><a href="#impl-From%3CT%3E-for-OnceCell%3CT%3E" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; From&lt;T&gt; for <a class="struct" href="struct.OnceCell.html" title="struct tokio::sync::OnceCell">OnceCell</a>&lt;T&gt;</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/tokio/sync/once_cell.rs.html#116-124">source</a><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a class="fnname">from</a>(value: T) -&gt; Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3COnceCell%3CT%3E%3E-for-OnceCell%3CT%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/tokio/sync/once_cell.rs.html#96-100">source</a><a href="#impl-PartialEq%3COnceCell%3CT%3E%3E-for-OnceCell%3CT%3E" class="anchor"></a><h3 class="code-header">impl&lt;T:&nbsp;PartialEq&gt; PartialEq&lt;<a class="struct" href="struct.OnceCell.html" title="struct tokio::sync::OnceCell">OnceCell</a>&lt;T&gt;&gt; for <a class="struct" href="struct.OnceCell.html" title="struct tokio::sync::OnceCell">OnceCell</a>&lt;T&gt;</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/tokio/sync/once_cell.rs.html#97-99">source</a><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a class="fnname">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.OnceCell.html" title="struct tokio::sync::OnceCell">OnceCell</a>&lt;T&gt;) -&gt; bool</h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
by <code>==</code>. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="since rightside" title="Stable since Rust version 1.0.0">1.0.0</span><a href="#method.ne" class="anchor"></a><h4 class="code-header">const fn <a class="fnname">ne</a>(&amp;self, other: &amp;Rhs) -&gt; bool</h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
sufficient, and should not be overridden without very good reason. <a>Read more</a></div></details></div></details><section id="impl-Eq-for-OnceCell%3CT%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/tokio/sync/once_cell.rs.html#102">source</a><a href="#impl-Eq-for-OnceCell%3CT%3E" class="anchor"></a><h3 class="code-header">impl&lt;T:&nbsp;Eq&gt; Eq for <a class="struct" href="struct.OnceCell.html" title="struct tokio::sync::OnceCell">OnceCell</a>&lt;T&gt;</h3></section><section id="impl-Send-for-OnceCell%3CT%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/tokio/sync/once_cell.rs.html#414">source</a><a href="#impl-Send-for-OnceCell%3CT%3E" class="anchor"></a><h3 class="code-header">impl&lt;T:&nbsp;Send&gt; Send for <a class="struct" href="struct.OnceCell.html" title="struct tokio::sync::OnceCell">OnceCell</a>&lt;T&gt;</h3></section><section id="impl-Sync-for-OnceCell%3CT%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/tokio/sync/once_cell.rs.html#409">source</a><a href="#impl-Sync-for-OnceCell%3CT%3E" class="anchor"></a><h3 class="code-header">impl&lt;T:&nbsp;Sync + Send&gt; Sync for <a class="struct" href="struct.OnceCell.html" title="struct tokio::sync::OnceCell">OnceCell</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-OnceCell%3CT%3E" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-OnceCell%3CT%3E" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; !RefUnwindSafe for <a class="struct" href="struct.OnceCell.html" title="struct tokio::sync::OnceCell">OnceCell</a>&lt;T&gt;</h3></section><section id="impl-Unpin-for-OnceCell%3CT%3E" class="impl has-srclink"><a href="#impl-Unpin-for-OnceCell%3CT%3E" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; Unpin for <a class="struct" href="struct.OnceCell.html" title="struct tokio::sync::OnceCell">OnceCell</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-OnceCell%3CT%3E" class="impl has-srclink"><a href="#impl-UnwindSafe-for-OnceCell%3CT%3E" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; UnwindSafe for <a class="struct" href="struct.OnceCell.html" title="struct tokio::sync::OnceCell">OnceCell</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-OnceCell%3CT%3E" class="impl has-srclink"><a href="#impl-Any-for-OnceCell%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-OnceCell%3CT%3E" class="impl has-srclink"><a href="#impl-Borrow%3CT%3E-for-OnceCell%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-OnceCell%3CT%3E" class="impl has-srclink"><a href="#impl-BorrowMut%3CT%3E-for-OnceCell%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%3C!%3E-for-OnceCell%3CT%3E" class="impl has-srclink"><a href="#impl-From%3C!%3E-for-OnceCell%3CT%3E" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; From&lt;!&gt; for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-2" class="method trait-impl has-srclink"><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-2" class="anchor"></a><h4 class="code-header">fn <a class="fnname">from</a>(t: !) -&gt; T</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-OnceCell%3CT%3E-1" class="impl has-srclink"><a href="#impl-From%3CT%3E-for-OnceCell%3CT%3E-1" 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-1" 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-1" 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-OnceCell%3CT%3E" class="impl has-srclink"><a href="#impl-Into%3CU%3E-for-OnceCell%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-ToOwned-for-OnceCell%3CT%3E" class="impl has-srclink"><a href="#impl-ToOwned-for-OnceCell%3CT%3E" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; ToOwned for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: Clone,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">fn <a class="fnname">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">fn <a class="fnname">clone_into</a>(&amp;self, target: &amp;mut T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-OnceCell%3CT%3E" class="impl has-srclink"><a href="#impl-TryFrom%3CU%3E-for-OnceCell%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-OnceCell%3CT%3E" class="impl has-srclink"><a href="#impl-TryInto%3CU%3E-for-OnceCell%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="tokio" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.66.0-nightly (5c8bff74b 2022-10-21)" ></div></body></html>