Skip to content

Commit

Permalink
small change in select example. (rust-lang#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 committed Feb 14, 2021
1 parent 0d45654 commit 5e0e00c
Showing 1 changed file with 16 additions and 8 deletions.
24 changes: 16 additions & 8 deletions futures-util/src/future/select.rs
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;
/// 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 { 1 };
/// let future2 = async { 2 };
/// // 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 5e0e00c

Please sign in to comment.