From 6acaa815bc2834d4947ab13d7609d85784b1a34c Mon Sep 17 00:00:00 2001 From: Jan Tungli <33368331+tungli@users.noreply.github.com> Date: Sun, 14 Feb 2021 18:45:53 +0100 Subject: [PATCH] small change in `select` example. (#2345) In the previous example one future always finished first (because of implementation details), possibly confusing users about what `select` does. This commit resolves the issue by being explicit about one future finishing before the other. Co-authored-by: tungli Co-authored-by: Taiki Endo --- futures-util/src/future/select.rs | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/futures-util/src/future/select.rs b/futures-util/src/future/select.rs index fc4316afa2..043ed178e7 100644 --- a/futures-util/src/future/select.rs +++ b/futures-util/src/future/select.rs @@ -32,25 +32,33 @@ impl Unpin for Select {} /// /// ``` /// # futures::executor::block_on(async { -/// use futures::future::{self, Either}; -/// use futures::pin_mut; -/// -/// // These two futures have different types even though their outputs have the same type -/// let future1 = async { 1 }; -/// let future2 = async { 2 }; +/// use futures::{ +/// pin_mut, +/// future::Either, +/// future::self, +/// }; +/// +/// // These two futures have different types even though their outputs have the same type. +/// let future1 = async { +/// future::pending::<()>().await; // will never finish +/// 1 +/// }; +/// let future2 = async { +/// future::ready(2).await +/// }; /// /// // 'select' requires Future + Unpin bounds /// pin_mut!(future1); /// pin_mut!(future2); /// /// let value = match future::select(future1, future2).await { -/// Either::Left((value1, _)) => value1, // `value1` is resolved from `future1` -/// // `_` represents `future2` +/// Either::Left((value1, _)) => value1, // `value1` is resolved from `future1` +/// // `_` represents `future2` /// Either::Right((value2, _)) => value2, // `value2` is resolved from `future2` /// // `_` represents `future1` /// }; /// -/// assert!(value == 1 || value == 2); +/// assert!(value == 2); /// # }); /// ``` ///