Skip to content

Commit

Permalink
small change in select example. (#2345)
Browse files Browse the repository at this point in the history
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 <tun@mail.muni.cz>
Co-authored-by: Taiki Endo <te316e89@gmail.com>
  • Loading branch information
3 people authored Feb 14, 2021
1 parent 59f62b0 commit 6acaa81
Showing 1 changed file with 17 additions and 9 deletions.
26 changes: 17 additions & 9 deletions futures-util/src/future/select.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,25 +32,33 @@ impl<A: Unpin, B: Unpin> Unpin for Select<A, B> {}
///
/// ```
/// # 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);
/// # });
/// ```
///
Expand Down

0 comments on commit 6acaa81

Please sign in to comment.