blob: 9f5f1255082f7fc0a63172a54a375561aa055b11 [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="Creates a future which represents either a collection of the results of the futures given or an error."><meta name="keywords" content="rust, rustlang, rust-lang, try_join_all"><title>try_join_all in futures::prelude::future - 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 fn"><!--[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="../../../futures/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="../../../futures/index.html"><div class="logo-container"><img class="rust-logo" src="../../../rust-logo.svg" alt="logo"></div></a><div class="sidebar-elems"><h2><a href="index.html">In futures::prelude::future</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">Function <a href="../../index.html">futures</a>::<wbr><a href="../index.html">prelude</a>::<wbr><a href="index.html">future</a>::<wbr><a class="fn" href="#">try_join_all</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/futures_util/future/try_join_all.rs.html#117-120">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 fn"><code>pub fn try_join_all&lt;I&gt;(iter: I) -&gt; <a class="struct" href="../../future/struct.TryJoinAll.html" title="struct futures::future::TryJoinAll">TryJoinAll</a>&lt;&lt;I as IntoIterator&gt;::Item&gt;<span class="notable-traits"><span class="notable-traits-tooltip"><span class="notable-traits-tooltiptext"><span class="docblock"><span class="notable">Notable traits for <a class="struct" href="../../future/struct.TryJoinAll.html" title="struct futures::future::TryJoinAll">TryJoinAll</a>&lt;F&gt;</span><code class="content"><span class="where fmt-newline">impl&lt;F&gt; <a class="trait" href="../../future/trait.Future.html" title="trait futures::future::Future">Future</a> for <a class="struct" href="../../future/struct.TryJoinAll.html" title="struct futures::future::TryJoinAll">TryJoinAll</a>&lt;F&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;F: <a class="trait" href="../../future/trait.TryFuture.html" title="trait futures::future::TryFuture">TryFuture</a>,</span></span><span class="where fmt-newline"> type <a href="../../future/trait.Future.html#associatedtype.Output" class="associatedtype">Output</a> = Result&lt;Vec&lt;&lt;F as <a class="trait" href="../../future/trait.TryFuture.html" title="trait futures::future::TryFuture">TryFuture</a>&gt;::<a class="associatedtype" href="../../future/trait.TryFuture.html#associatedtype.Ok" title="type futures::future::TryFuture::Ok">Ok</a>, Global&gt;, &lt;F as <a class="trait" href="../../future/trait.TryFuture.html" title="trait futures::future::TryFuture">TryFuture</a>&gt;::<a class="associatedtype" href="../../future/trait.TryFuture.html#associatedtype.Error" title="type futures::future::TryFuture::Error">Error</a>&gt;;</span></code></span></span></span></span><span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;I: IntoIterator,<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;I as IntoIterator&gt;::Item: <a class="trait" href="../../future/trait.TryFuture.html" title="trait futures::future::TryFuture">TryFuture</a>,</span></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Creates a future which represents either a collection of the results of the
futures given or an error.</p>
<p>The returned future will drive execution for all of its underlying futures,
collecting the results into a destination <code>Vec&lt;T&gt;</code> in the same order as they
were provided.</p>
<p>If any future returns an error then all other futures will be canceled and
an error will be returned immediately. If all futures complete successfully,
however, then the returned future will succeed with a <code>Vec</code> of all the
successful results.</p>
<p>This function is only available when the <code>std</code> or <code>alloc</code> feature of this
library is activated, and it is activated by default.</p>
<h2 id="see-also"><a href="#see-also">See Also</a></h2>
<p><code>try_join_all</code> will switch to the more powerful <a href="../../stream/struct.FuturesOrdered.html" title="FuturesOrdered"><code>FuturesOrdered</code></a> for performance
reasons if the number of futures is large. You may want to look into using it or
it’s counterpart <a href="../../stream/struct.FuturesUnordered.html" title="crate::stream::FuturesUnordered"><code>FuturesUnordered</code></a> directly.</p>
<p>Some examples for additional functionality provided by these are:</p>
<ul>
<li>
<p>Adding new futures to the set even after it has been started.</p>
</li>
<li>
<p>Only polling the specific futures that have been woken. In cases where
you have a lot of futures this will result in much more efficient polling.</p>
</li>
</ul>
<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>futures::future::{<span class="self">self</span>, try_join_all};
<span class="kw">let </span>futures = <span class="macro">vec!</span>[
future::ok::&lt;u32, u32&gt;(<span class="number">1</span>),
future::ok::&lt;u32, u32&gt;(<span class="number">2</span>),
future::ok::&lt;u32, u32&gt;(<span class="number">3</span>),
];
<span class="macro">assert_eq!</span>(try_join_all(futures).<span class="kw">await</span>, <span class="prelude-val">Ok</span>(<span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>]));
<span class="kw">let </span>futures = <span class="macro">vec!</span>[
future::ok::&lt;u32, u32&gt;(<span class="number">1</span>),
future::err::&lt;u32, u32&gt;(<span class="number">2</span>),
future::ok::&lt;u32, u32&gt;(<span class="number">3</span>),
];
<span class="macro">assert_eq!</span>(try_join_all(futures).<span class="kw">await</span>, <span class="prelude-val">Err</span>(<span class="number">2</span>));</code></pre></div>
</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="futures" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.66.0-nightly (5c8bff74b 2022-10-21)" ></div></body></html>