Files
GopherGate/target/doc/futures_channel/oneshot/fn.channel.html
2026-02-26 12:00:21 -05:00

27 lines
5.2 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="Creates a new one-shot channel for sending a single value across asynchronous tasks."><title>channel in futures_channel::oneshot - 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="futures_channel" 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 fn"><!--[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="#">channel</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../futures_channel/index.html">futures_<wbr>channel</a><span class="version">0.3.32</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">channel</a></h2><h3><a href="#">Sections</a></h3><ul class="block top-toc"><li><a href="#examples" title="Examples">Examples</a></li></ul></section><div id="rustdoc-modnav"><h2><a href="index.html">In futures_<wbr>channel::<wbr>oneshot</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">futures_channel</a>::<wbr><a href="index.html">oneshot</a></div><h1>Function <span class="fn">channel</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/futures_channel/oneshot.rs.html#104-109">Source</a> </span></div><pre class="rust item-decl"><code>pub fn channel&lt;T&gt;() -&gt; (<a class="struct" href="struct.Sender.html" title="struct futures_channel::oneshot::Sender">Sender</a>&lt;T&gt;, <a class="struct" href="struct.Receiver.html" title="struct futures_channel::oneshot::Receiver">Receiver</a>&lt;T&gt;)</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Creates a new one-shot channel for sending a single value across asynchronous tasks.</p>
<p>The channel works for a spsc (single-producer, single-consumer) scheme.</p>
<p>This function is similar to Rusts channel constructor found in the standard
library. Two halves are returned, the first of which is a <code>Sender</code> handle,
used to signal the end of a computation and provide its value. The second
half is a <code>Receiver</code> which implements the <code>Future</code> trait, resolving to the
value that was given to the <code>Sender</code> handle.</p>
<p>Each half can be separately owned and sent across tasks.</p>
<h2 id="examples"><a class="doc-anchor" href="#examples">§</a>Examples</h2>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>futures::channel::oneshot;
<span class="kw">use </span>std::{thread, time::Duration};
<span class="kw">let </span>(sender, receiver) = oneshot::channel::&lt;i32&gt;();
thread::spawn(|| {
<span class="macro">println!</span>(<span class="string">"THREAD: sleeping zzz..."</span>);
thread::sleep(Duration::from_millis(<span class="number">1000</span>));
<span class="macro">println!</span>(<span class="string">"THREAD: i'm awake! sending."</span>);
sender.send(<span class="number">3</span>).unwrap();
});
<span class="macro">println!</span>(<span class="string">"MAIN: doing some useful stuff"</span>);
futures::executor::block_on(<span class="kw">async </span>{
<span class="macro">println!</span>(<span class="string">"MAIN: waiting for msg..."</span>);
<span class="macro">println!</span>(<span class="string">"MAIN: got: {:?}"</span>, receiver.<span class="kw">await</span>)
});</code></pre></div></div></details></section></div></main></body></html>