Skip to content

Commit

Permalink
Add a simple example for future::select() (#2182)
Browse files Browse the repository at this point in the history
  • Loading branch information
keepsimple1 committed Sep 21, 2020
1 parent 263dbc6 commit fd1b938
Showing 1 changed file with 28 additions and 0 deletions.
28 changes: 28 additions & 0 deletions futures-util/src/future/select.rs
Expand Up @@ -27,6 +27,34 @@ impl<A: Unpin, B: Unpin> Unpin for Select<A, B> {}
///
/// # Examples
///
/// A simple example
///
/// ```
/// # 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 };
///
/// // '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::Right((value2, _)) => value2, // `value2` is resolved from `future2`
/// // `_` represents `future1`
/// };
///
/// assert!(value == 1 || value == 2);
/// # });
/// ```
///
/// A more complex example
///
/// ```
/// use futures::future::{self, Either, Future, FutureExt};
///
Expand Down

0 comments on commit fd1b938

Please sign in to comment.