Files
GopherGate/target/doc/tokio/sync/watch/struct.Sender.html
2026-02-26 12:00:21 -05:00

220 lines
52 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="Sends values to the associated `Receiver`."><title>Sender in tokio::sync::watch - 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="tokio" 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="#">Sender</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../tokio/index.html">tokio</a><span class="version">1.49.0</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Sender</a></h2><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.borrow" title="borrow">borrow</a></li><li><a href="#method.closed" title="closed">closed</a></li><li><a href="#method.is_closed" title="is_closed">is_closed</a></li><li><a href="#method.new" title="new">new</a></li><li><a href="#method.receiver_count" title="receiver_count">receiver_count</a></li><li><a href="#method.same_channel" title="same_channel">same_channel</a></li><li><a href="#method.send" title="send">send</a></li><li><a href="#method.send_if_modified" title="send_if_modified">send_if_modified</a></li><li><a href="#method.send_modify" title="send_modify">send_modify</a></li><li><a href="#method.send_replace" title="send_replace">send_replace</a></li><li><a href="#method.sender_count" title="sender_count">sender_count</a></li><li><a href="#method.subscribe" title="subscribe">subscribe</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-Sender%3CT%3E" title="Clone">Clone</a></li><li><a href="#impl-Debug-for-Sender%3CT%3E" title="Debug">Debug</a></li><li><a href="#impl-Default-for-Sender%3CT%3E" title="Default">Default</a></li><li><a href="#impl-Drop-for-Sender%3CT%3E" title="Drop">Drop</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-RefUnwindSafe-for-Sender%3CT%3E" title="!RefUnwindSafe">!RefUnwindSafe</a></li><li><a href="#impl-UnwindSafe-for-Sender%3CT%3E" title="!UnwindSafe">!UnwindSafe</a></li><li><a href="#impl-Freeze-for-Sender%3CT%3E" title="Freeze">Freeze</a></li><li><a href="#impl-Send-for-Sender%3CT%3E" title="Send">Send</a></li><li><a href="#impl-Sync-for-Sender%3CT%3E" title="Sync">Sync</a></li><li><a href="#impl-Unpin-for-Sender%3CT%3E" title="Unpin">Unpin</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-CloneToUninit-for-T" title="CloneToUninit">CloneToUninit</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-ToOwned-for-T" title="ToOwned">ToOwned</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 tokio::<wbr>sync::<wbr>watch</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">tokio</a>::<wbr><a href="../index.html">sync</a>::<wbr><a href="index.html">watch</a></div><h1>Struct <span class="struct">Sender</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/tokio/sync/watch.rs.html#197-199">Source</a> </span></div><pre class="rust item-decl"><code>pub struct Sender&lt;T&gt; { <span class="comment">/* private fields */</span> }</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Sends values to the associated <a href="struct.Receiver.html" title="struct tokio::sync::watch::Receiver"><code>Receiver</code></a>.</p>
<p>Instances are created by the <a href="fn.channel.html" title="fn tokio::sync::watch::channel"><code>channel</code></a> function.</p>
</div></details><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Sender%3CT%3E" class="impl"><a class="src rightside" href="../../../src/tokio/sync/watch.rs.html#1024-1456">Source</a><a href="#impl-Sender%3CT%3E" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="struct" href="struct.Sender.html" title="struct tokio::sync::watch::Sender">Sender</a>&lt;T&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.new" class="method"><a class="src rightside" href="../../../src/tokio/sync/watch.rs.html#1041-1044">Source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(init: T) -&gt; Self</h4></section></summary><div class="docblock"><p>Creates the sending-half of the <a href="index.html" title="mod tokio::sync::watch"><code>watch</code></a> channel.</p>
<p>See documentation of <a href="index.html" title="mod tokio::sync::watch"><code>watch::channel</code></a> for errors when calling this function.
Beware that attempting to send a value when there are no receivers will
return an error.</p>
<h5 id="examples"><a class="doc-anchor" href="#examples">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>sender = tokio::sync::watch::Sender::new(<span class="number">0u8</span>);
<span class="macro">assert!</span>(sender.send(<span class="number">3</span>).is_err());
<span class="kw">let </span>_rec = sender.subscribe();
<span class="macro">assert!</span>(sender.send(<span class="number">4</span>).is_ok());</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.send" class="method"><a class="src rightside" href="../../../src/tokio/sync/watch.rs.html#1064-1072">Source</a><h4 class="code-header">pub fn <a href="#method.send" class="fn">send</a>(&amp;self, value: T) -&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;<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.unit.html">()</a>, <a class="struct" href="error/struct.SendError.html" title="struct tokio::sync::watch::error::SendError">SendError</a>&lt;T&gt;&gt;</h4></section></summary><div class="docblock"><p>Sends a new value via the channel, notifying all receivers.</p>
<p>This method fails if the channel is closed, which is the case when
every receiver has been dropped. It is possible to reopen the channel
using the <a href="struct.Sender.html#method.subscribe" title="method tokio::sync::watch::Sender::subscribe"><code>subscribe</code></a> method. However, when <code>send</code> fails, the value
isnt made available for future receivers (but returned with the
<a href="error/struct.SendError.html" title="struct tokio::sync::watch::error::SendError"><code>SendError</code></a>).</p>
<p>To always make a new value available for future receivers, even if no
receiver currently exists, one of the other send methods
(<a href="struct.Sender.html#method.send_if_modified" title="method tokio::sync::watch::Sender::send_if_modified"><code>send_if_modified</code></a>, <a href="struct.Sender.html#method.send_modify" title="method tokio::sync::watch::Sender::send_modify"><code>send_modify</code></a>, or <a href="struct.Sender.html#method.send_replace" title="method tokio::sync::watch::Sender::send_replace"><code>send_replace</code></a>) can be
used instead.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.send_modify" class="method"><a class="src rightside" href="../../../src/tokio/sync/watch.rs.html#1104-1112">Source</a><h4 class="code-header">pub fn <a href="#method.send_modify" class="fn">send_modify</a>&lt;F&gt;(&amp;self, modify: F)<div class="where">where
F: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.reference.html">&amp;mut T</a>),</div></h4></section></summary><div class="docblock"><p>Modifies the watched value <strong>unconditionally</strong> in-place,
notifying all receivers.</p>
<p>This can be useful for modifying the watched value, without
having to allocate a new instance. Additionally, this
method permits sending values even when there are no receivers.</p>
<p>Prefer to use the more versatile function <a href="struct.Sender.html#method.send_if_modified" title="method tokio::sync::watch::Sender::send_if_modified"><code>Self::send_if_modified()</code></a>
if the value is only modified conditionally during the mutable borrow
to prevent unneeded change notifications for unmodified values.</p>
<h5 id="panics"><a class="doc-anchor" href="#panics">§</a>Panics</h5>
<p>This function panics when the invocation of the <code>modify</code> closure panics.
No receivers are notified when panicking. All changes of the watched
value applied by the closure before panicking will be visible in
subsequent calls to <code>borrow</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>tokio::sync::watch;
<span class="kw">struct </span>State {
counter: usize,
}
<span class="kw">let </span>(state_tx, state_rx) = watch::channel(State { counter: <span class="number">0 </span>});
state_tx.send_modify(|state| state.counter += <span class="number">1</span>);
<span class="macro">assert_eq!</span>(state_rx.borrow().counter, <span class="number">1</span>);</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.send_if_modified" class="method"><a class="src rightside" href="../../../src/tokio/sync/watch.rs.html#1171-1211">Source</a><h4 class="code-header">pub fn <a href="#method.send_if_modified" class="fn">send_if_modified</a>&lt;F&gt;(&amp;self, modify: F) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.bool.html">bool</a><div class="where">where
F: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.reference.html">&amp;mut T</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class="docblock"><p>Modifies the watched value <strong>conditionally</strong> in-place,
notifying all receivers only if modified.</p>
<p>This can be useful for modifying the watched value, without
having to allocate a new instance. Additionally, this
method permits sending values even when there are no receivers.</p>
<p>The <code>modify</code> closure must return <code>true</code> if the value has actually
been modified during the mutable borrow. It should only return <code>false</code>
if the value is guaranteed to be unmodified despite the mutable
borrow.</p>
<p>Receivers are only notified if the closure returned <code>true</code>. If the
closure has modified the value but returned <code>false</code> this results
in a <em>silent modification</em>, i.e. the modified value will be visible
in subsequent calls to <code>borrow</code>, but receivers will not receive
a change notification.</p>
<p>Returns the result of the closure, i.e. <code>true</code> if the value has
been modified and <code>false</code> otherwise.</p>
<h5 id="panics-1"><a class="doc-anchor" href="#panics-1">§</a>Panics</h5>
<p>This function panics when the invocation of the <code>modify</code> closure panics.
No receivers are notified when panicking. All changes of the watched
value applied by the closure before panicking will be visible in
subsequent calls to <code>borrow</code>.</p>
<h5 id="examples-2"><a class="doc-anchor" href="#examples-2">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>tokio::sync::watch;
<span class="kw">struct </span>State {
counter: usize,
}
<span class="kw">let </span>(state_tx, <span class="kw-2">mut </span>state_rx) = watch::channel(State { counter: <span class="number">1 </span>});
<span class="kw">let </span>inc_counter_if_odd = |state: <span class="kw-2">&amp;mut </span>State| {
<span class="kw">if </span>state.counter % <span class="number">2 </span>== <span class="number">1 </span>{
state.counter += <span class="number">1</span>;
<span class="kw">return </span><span class="bool-val">true</span>;
}
<span class="bool-val">false
</span>};
<span class="macro">assert_eq!</span>(state_rx.borrow().counter, <span class="number">1</span>);
<span class="macro">assert!</span>(!state_rx.has_changed().unwrap());
<span class="macro">assert!</span>(state_tx.send_if_modified(inc_counter_if_odd));
<span class="macro">assert!</span>(state_rx.has_changed().unwrap());
<span class="macro">assert_eq!</span>(state_rx.borrow_and_update().counter, <span class="number">2</span>);
<span class="macro">assert!</span>(!state_rx.has_changed().unwrap());
<span class="macro">assert!</span>(!state_tx.send_if_modified(inc_counter_if_odd));
<span class="macro">assert!</span>(!state_rx.has_changed().unwrap());
<span class="macro">assert_eq!</span>(state_rx.borrow_and_update().counter, <span class="number">2</span>);</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.send_replace" class="method"><a class="src rightside" href="../../../src/tokio/sync/watch.rs.html#1229-1234">Source</a><h4 class="code-header">pub fn <a href="#method.send_replace" class="fn">send_replace</a>(&amp;self, value: T) -&gt; T</h4></section></summary><div class="docblock"><p>Sends a new value via the channel, notifying all receivers and returning
the previous value in the channel.</p>
<p>This can be useful for reusing the buffers inside a watched value.
Additionally, this method permits sending values even when there are no
receivers.</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>tokio::sync::watch;
<span class="kw">let </span>(tx, _rx) = watch::channel(<span class="number">1</span>);
<span class="macro">assert_eq!</span>(tx.send_replace(<span class="number">2</span>), <span class="number">1</span>);
<span class="macro">assert_eq!</span>(tx.send_replace(<span class="number">3</span>), <span class="number">2</span>);</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method"><a class="src rightside" href="../../../src/tokio/sync/watch.rs.html#1253-1260">Source</a><h4 class="code-header">pub fn <a href="#method.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="struct" href="struct.Ref.html" title="struct tokio::sync::watch::Ref">Ref</a>&lt;'_, T&gt;</h4></section></summary><div class="docblock"><p>Returns a reference to the most recently sent value</p>
<p>Outstanding borrows hold a read lock on the inner value. This means that
long-lived borrows could cause the producer half to block. It is recommended
to keep the borrow as short-lived as possible. Additionally, if you are
running in an environment that allows <code>!Send</code> futures, you must ensure that
the returned <code>Ref</code> type is never held alive across an <code>.await</code> point,
otherwise, it can lead to a deadlock.</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>tokio::sync::watch;
<span class="kw">let </span>(tx, <span class="kw">_</span>) = watch::channel(<span class="string">"hello"</span>);
<span class="macro">assert_eq!</span>(<span class="kw-2">*</span>tx.borrow(), <span class="string">"hello"</span>);</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.is_closed" class="method"><a class="src rightside" href="../../../src/tokio/sync/watch.rs.html#1274-1276">Source</a><h4 class="code-header">pub fn <a href="#method.is_closed" class="fn">is_closed</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Checks if the channel has been closed. This happens when all receivers
have dropped.</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">let </span>(tx, rx) = tokio::sync::watch::channel(());
<span class="macro">assert!</span>(!tx.is_closed());
drop(rx);
<span class="macro">assert!</span>(tx.is_closed());</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.closed" class="method"><a class="src rightside" href="../../../src/tokio/sync/watch.rs.html#1313-1330">Source</a><h4 class="code-header">pub async fn <a href="#method.closed" class="fn">closed</a>(&amp;self)</h4></section></summary><div class="docblock"><p>Completes when all receivers have dropped.</p>
<p>This allows the producer to get notified when interest in the produced
values is canceled and immediately stop doing work. Once a channel is
closed, the only way to reopen it is to call <a href="struct.Sender.html#method.subscribe" title="method tokio::sync::watch::Sender::subscribe"><code>Sender::subscribe</code></a> to
get a new receiver.</p>
<p>If the channel becomes closed for a brief amount of time (e.g., the last
receiver is dropped and then <code>subscribe</code> is called), then this call to
<code>closed</code> might return, but it is also possible that it does not “notice”
that the channel was closed for a brief amount of time.</p>
<h5 id="cancel-safety"><a class="doc-anchor" href="#cancel-safety">§</a>Cancel safety</h5>
<p>This method is cancel safe.</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>tokio::sync::watch;
<span class="kw">let </span>(tx, rx) = watch::channel(<span class="string">"hello"</span>);
tokio::spawn(<span class="kw">async move </span>{
<span class="comment">// use `rx`
</span>drop(rx);
});
<span class="comment">// Waits for `rx` to drop
</span>tx.closed().<span class="kw">await</span>;
<span class="macro">println!</span>(<span class="string">"the `rx` handles dropped"</span>)</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.subscribe" class="method"><a class="src rightside" href="../../../src/tokio/sync/watch.rs.html#1387-1394">Source</a><h4 class="code-header">pub fn <a href="#method.subscribe" class="fn">subscribe</a>(&amp;self) -&gt; <a class="struct" href="struct.Receiver.html" title="struct tokio::sync::watch::Receiver">Receiver</a>&lt;T&gt;</h4></section></summary><div class="docblock"><p>Creates a new <a href="struct.Receiver.html" title="struct tokio::sync::watch::Receiver"><code>Receiver</code></a> connected to this <code>Sender</code>.</p>
<p>All messages sent before this call to <code>subscribe</code> are initially marked
as seen by the new <code>Receiver</code>.</p>
<p>This method can be called even if there are no other receivers. In this
case, the channel is reopened.</p>
<h5 id="examples-7"><a class="doc-anchor" href="#examples-7">§</a>Examples</h5>
<p>The new channel will receive messages sent on this <code>Sender</code>.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>tokio::sync::watch;
<span class="kw">let </span>(tx, _rx) = watch::channel(<span class="number">0u64</span>);
tx.send(<span class="number">5</span>).unwrap();
<span class="kw">let </span>rx = tx.subscribe();
<span class="macro">assert_eq!</span>(<span class="number">5</span>, <span class="kw-2">*</span>rx.borrow());
tx.send(<span class="number">10</span>).unwrap();
<span class="macro">assert_eq!</span>(<span class="number">10</span>, <span class="kw-2">*</span>rx.borrow());</code></pre></div>
<p>The most recent message is considered seen by the channel, so this test
is guaranteed to pass.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>tokio::sync::watch;
<span class="kw">use </span>tokio::time::Duration;
<span class="kw">let </span>(tx, _rx) = watch::channel(<span class="number">0u64</span>);
tx.send(<span class="number">5</span>).unwrap();
<span class="kw">let </span><span class="kw-2">mut </span>rx = tx.subscribe();
tokio::spawn(<span class="kw">async move </span>{
<span class="comment">// by spawning and sleeping, the message is sent after `main`
// hits the call to `changed`.
</span>tokio::time::sleep(Duration::from_millis(<span class="number">10</span>)).<span class="kw">await</span>;
tx.send(<span class="number">100</span>).unwrap();
});
rx.changed().<span class="kw">await</span>.unwrap();
<span class="macro">assert_eq!</span>(<span class="number">100</span>, <span class="kw-2">*</span>rx.borrow());</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.receiver_count" class="method"><a class="src rightside" href="../../../src/tokio/sync/watch.rs.html#1414-1416">Source</a><h4 class="code-header">pub fn <a href="#method.receiver_count" class="fn">receiver_count</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the number of receivers that currently exist.</p>
<h5 id="examples-8"><a class="doc-anchor" href="#examples-8">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>tokio::sync::watch;
<span class="kw">let </span>(tx, rx1) = watch::channel(<span class="string">"hello"</span>);
<span class="macro">assert_eq!</span>(<span class="number">1</span>, tx.receiver_count());
<span class="kw">let </span><span class="kw-2">mut </span>_rx2 = rx1.clone();
<span class="macro">assert_eq!</span>(<span class="number">2</span>, tx.receiver_count());</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.sender_count" class="method"><a class="src rightside" href="../../../src/tokio/sync/watch.rs.html#1437-1439">Source</a><h4 class="code-header">pub fn <a href="#method.sender_count" class="fn">sender_count</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the number of senders that currently exist.</p>
<h5 id="examples-9"><a class="doc-anchor" href="#examples-9">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>tokio::sync::watch;
<span class="kw">let </span>(tx1, rx) = watch::channel(<span class="string">"hello"</span>);
<span class="macro">assert_eq!</span>(<span class="number">1</span>, tx1.sender_count());
<span class="kw">let </span>tx2 = tx1.clone();
<span class="macro">assert_eq!</span>(<span class="number">2</span>, tx1.sender_count());
<span class="macro">assert_eq!</span>(<span class="number">2</span>, tx2.sender_count());</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.same_channel" class="method"><a class="src rightside" href="../../../src/tokio/sync/watch.rs.html#1453-1455">Source</a><h4 class="code-header">pub fn <a href="#method.same_channel" class="fn">same_channel</a>(&amp;self, other: &amp;Self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns <code>true</code> if senders belong to the same channel.</p>
<h5 id="examples-10"><a class="doc-anchor" href="#examples-10">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>(tx, rx) = tokio::sync::watch::channel(<span class="bool-val">true</span>);
<span class="kw">let </span>tx2 = tx.clone();
<span class="macro">assert!</span>(tx.same_channel(<span class="kw-2">&amp;</span>tx2));
<span class="kw">let </span>(tx3, rx3) = tokio::sync::watch::channel(<span class="bool-val">true</span>);
<span class="macro">assert!</span>(!tx3.same_channel(<span class="kw-2">&amp;</span>tx2));</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-Clone-for-Sender%3CT%3E" class="impl"><a class="src rightside" href="../../../src/tokio/sync/watch.rs.html#201-209">Source</a><a href="#impl-Clone-for-Sender%3CT%3E" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.Sender.html" title="struct tokio::sync::watch::Sender">Sender</a>&lt;T&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../../src/tokio/sync/watch.rs.html#202-208">Source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; Self</h4></section></summary><div class='docblock'>Returns a duplicate of the value. <a href="https://doc.rust-lang.org/1.93.1/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.93.1/src/core/clone.rs.html#245-247">Source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: &amp;Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/1.93.1/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Sender%3CT%3E" class="impl"><a class="src rightside" href="../../../src/tokio/sync/watch.rs.html#196">Source</a><a href="#impl-Debug-for-Sender%3CT%3E" class="anchor">§</a><h3 class="code-header">impl&lt;T: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a>&gt; <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.Sender.html" title="struct tokio::sync::watch::Sender">Sender</a>&lt;T&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../../src/tokio/sync/watch.rs.html#196">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-Sender%3CT%3E" class="impl"><a class="src rightside" href="../../../src/tokio/sync/watch.rs.html#211-215">Source</a><a href="#impl-Default-for-Sender%3CT%3E" class="anchor">§</a><h3 class="code-header">impl&lt;T: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/default/trait.Default.html" title="trait core::default::Default">Default</a>&gt; <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.Sender.html" title="struct tokio::sync::watch::Sender">Sender</a>&lt;T&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.default" class="method trait-impl"><a class="src rightside" href="../../../src/tokio/sync/watch.rs.html#212-214">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><details class="toggle implementors-toggle" open><summary><section id="impl-Drop-for-Sender%3CT%3E" class="impl"><a class="src rightside" href="../../../src/tokio/sync/watch.rs.html#1458-1465">Source</a><a href="#impl-Drop-for-Sender%3CT%3E" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/ops/drop/trait.Drop.html" title="trait core::ops::drop::Drop">Drop</a> for <a class="struct" href="struct.Sender.html" title="struct tokio::sync::watch::Sender">Sender</a>&lt;T&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl"><a class="src rightside" href="../../../src/tokio/sync/watch.rs.html#1459-1464">Source</a><a href="#method.drop" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/ops/drop/trait.Drop.html#tymethod.drop" class="fn">drop</a>(&amp;mut self)</h4></section></summary><div class='docblock'>Executes the destructor for this type. <a href="https://doc.rust-lang.org/1.93.1/core/ops/drop/trait.Drop.html#tymethod.drop">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Sender%3CT%3E" class="impl"><a href="#impl-Freeze-for-Sender%3CT%3E" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <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.Sender.html" title="struct tokio::sync::watch::Sender">Sender</a>&lt;T&gt;</h3></section><section id="impl-RefUnwindSafe-for-Sender%3CT%3E" class="impl"><a href="#impl-RefUnwindSafe-for-Sender%3CT%3E" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; !<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.Sender.html" title="struct tokio::sync::watch::Sender">Sender</a>&lt;T&gt;</h3></section><section id="impl-Send-for-Sender%3CT%3E" class="impl"><a href="#impl-Send-for-Sender%3CT%3E" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <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.Sender.html" title="struct tokio::sync::watch::Sender">Sender</a>&lt;T&gt;<div class="where">where
T: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</div></h3></section><section id="impl-Sync-for-Sender%3CT%3E" class="impl"><a href="#impl-Sync-for-Sender%3CT%3E" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <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.Sender.html" title="struct tokio::sync::watch::Sender">Sender</a>&lt;T&gt;<div class="where">where
T: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</div></h3></section><section id="impl-Unpin-for-Sender%3CT%3E" class="impl"><a href="#impl-Unpin-for-Sender%3CT%3E" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <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.Sender.html" title="struct tokio::sync::watch::Sender">Sender</a>&lt;T&gt;</h3></section><section id="impl-UnwindSafe-for-Sender%3CT%3E" class="impl"><a href="#impl-UnwindSafe-for-Sender%3CT%3E" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; !<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.Sender.html" title="struct tokio::sync::watch::Sender">Sender</a>&lt;T&gt;</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-1" 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-1" 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-CloneToUninit-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/clone.rs.html#547">Source</a><a href="#impl-CloneToUninit-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/clone/trait.CloneToUninit.html" title="trait core::clone::CloneToUninit">CloneToUninit</a> for T<div class="where">where
T: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone_to_uninit" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/clone.rs.html#549">Source</a><a href="#method.clone_to_uninit" class="anchor">§</a><h4 class="code-header">unsafe fn <a href="https://doc.rust-lang.org/1.93.1/core/clone/trait.CloneToUninit.html#tymethod.clone_to_uninit" class="fn">clone_to_uninit</a>(&amp;self, dest: <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.pointer.html">*mut </a><a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.u8.html">u8</a>)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>clone_to_uninit</code>)</span></div></span><div class='docblock'>Performs copy-assignment from <code>self</code> to <code>dest</code>. <a href="https://doc.rust-lang.org/1.93.1/core/clone/trait.CloneToUninit.html#tymethod.clone_to_uninit">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-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/alloc/borrow.rs.html#85-87">Source</a><a href="#impl-ToOwned-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/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
T: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/alloc/borrow.rs.html#89">Source</a><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.93.1/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/alloc/borrow.rs.html#90">Source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/1.93.1/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/alloc/borrow.rs.html#94">Source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <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'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/1.93.1/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></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>