Skip to content

Commit

Permalink
Wrap doc comments in futures_ordered.rs
Browse files Browse the repository at this point in the history
  • Loading branch information
zachs18 authored and taiki-e committed Oct 9, 2023
1 parent 9186582 commit a402900
Showing 1 changed file with 28 additions and 24 deletions.
52 changes: 28 additions & 24 deletions futures-util/src/stream/futures_ordered.rs
Expand Up @@ -58,8 +58,8 @@ where

/// An unbounded queue of futures.
///
/// This "combinator" is similar to [`FuturesUnordered`], but it imposes a FIFO order
/// on top of the set of futures. While futures in the set will race to
/// This "combinator" is similar to [`FuturesUnordered`], but it imposes a FIFO
/// order on top of the set of futures. While futures in the set will race to
/// completion in parallel, results will only be returned in the order their
/// originating futures were added to the queue.
///
Expand All @@ -70,19 +70,22 @@ where
/// large numbers of futures.
///
/// When a [`FuturesOrdered`] is first created, it does not contain any futures.
/// Calling [`poll_next`](FuturesOrdered::poll_next) in this state will result in [`Poll::Ready(None)`](Poll::Ready) to be
/// returned. Futures are submitted to the queue using [`push_back`](FuturesOrdered::push_back) (or [`push_front`](FuturesOrdered::push_front)); however, the
/// future will **not** be polled at this point. [`FuturesOrdered`] will only
/// poll managed futures when [`FuturesOrdered::poll_next`] is called. As such, it
/// is important to call [`poll_next`](FuturesOrdered::poll_next) after pushing new futures.
/// Calling [`poll_next`](FuturesOrdered::poll_next) in this state will result
/// in [`Poll::Ready(None)`](Poll::Ready) to be returned. Futures are submitted
/// to the queue using [`push_back`](FuturesOrdered::push_back) (or
/// [`push_front`](FuturesOrdered::push_front)); however, the future will
/// **not** be polled at this point. [`FuturesOrdered`] will only poll managed
/// futures when [`FuturesOrdered::poll_next`] is called. As such, it
/// is important to call [`poll_next`](FuturesOrdered::poll_next) after pushing
/// new futures.
///
/// If [`FuturesOrdered::poll_next`] returns [`Poll::Ready(None)`](Poll::Ready) this means that
/// the queue is currently not managing any futures. A future may be submitted
/// to the queue at a later time. At that point, a call to
/// If [`FuturesOrdered::poll_next`] returns [`Poll::Ready(None)`](Poll::Ready)
/// this means that the queue is currently not managing any futures. A future
/// may be submitted to the queue at a later time. At that point, a call to
/// [`FuturesOrdered::poll_next`] will either return the future's resolved value
/// **or** [`Poll::Pending`] if the future has not yet completed. When
/// multiple futures are submitted to the queue, [`FuturesOrdered::poll_next`] will
/// return [`Poll::Pending`] until the first future completes, even if
/// multiple futures are submitted to the queue, [`FuturesOrdered::poll_next`]
/// will return [`Poll::Pending`] until the first future completes, even if
/// some of the later futures have already completed.
///
/// Note that you can create a ready-made [`FuturesOrdered`] via the
Expand All @@ -104,8 +107,9 @@ impl<T: Future> Unpin for FuturesOrdered<T> {}
impl<Fut: Future> FuturesOrdered<Fut> {
/// Constructs a new, empty `FuturesOrdered`
///
/// The returned [`FuturesOrdered`] does not contain any futures and, in this
/// state, [`FuturesOrdered::poll_next`] will return [`Poll::Ready(None)`](Poll::Ready).
/// The returned [`FuturesOrdered`] does not contain any futures and, in
/// this state, [`FuturesOrdered::poll_next`] will return
/// [`Poll::Ready(None)`](Poll::Ready).
pub fn new() -> Self {
Self {
in_progress_queue: FuturesUnordered::new(),
Expand All @@ -132,9 +136,9 @@ impl<Fut: Future> FuturesOrdered<Fut> {
/// Push a future into the queue.
///
/// This function submits the given future to the internal set for managing.
/// This function will not call [`poll`](Future::poll) on the submitted future. The caller
/// must ensure that [`FuturesOrdered::poll_next`] is called in order to receive
/// task notifications.
/// This function will not call [`poll`](Future::poll) on the submitted
/// future. The caller must ensure that [`FuturesOrdered::poll_next`] is
/// called in order to receive task notifications.
#[deprecated(note = "use `push_back` instead")]
pub fn push(&mut self, future: Fut) {
self.push_back(future);
Expand All @@ -143,9 +147,9 @@ impl<Fut: Future> FuturesOrdered<Fut> {
/// Pushes a future to the back of the queue.
///
/// This function submits the given future to the internal set for managing.
/// This function will not call [`poll`](Future::poll) on the submitted future. The caller
/// must ensure that [`FuturesOrdered::poll_next`] is called in order to receive
/// task notifications.
/// This function will not call [`poll`](Future::poll) on the submitted
/// future. The caller must ensure that [`FuturesOrdered::poll_next`] is
/// called in order to receive task notifications.
pub fn push_back(&mut self, future: Fut) {
let wrapped = OrderWrapper { data: future, index: self.next_incoming_index };
self.next_incoming_index += 1;
Expand All @@ -155,10 +159,10 @@ impl<Fut: Future> FuturesOrdered<Fut> {
/// Pushes a future to the front of the queue.
///
/// This function submits the given future to the internal set for managing.
/// This function will not call [`poll`](Future::poll) on the submitted future. The caller
/// must ensure that [`FuturesOrdered::poll_next`] is called in order to receive
/// task notifications. This future will be the next future to be returned
/// complete.
/// This function will not call [`poll`](Future::poll) on the submitted
/// future. The caller must ensure that [`FuturesOrdered::poll_next`] is
/// called in order to receive task notifications. This future will be
/// the next future to be returned complete.
pub fn push_front(&mut self, future: Fut) {
let wrapped = OrderWrapper { data: future, index: self.next_outgoing_index - 1 };
self.next_outgoing_index -= 1;
Expand Down

0 comments on commit a402900

Please sign in to comment.