summaryrefslogtreecommitdiffstats
path: root/library/core/src/task
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-18 02:49:50 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-18 02:49:50 +0000
commit9835e2ae736235810b4ea1c162ca5e65c547e770 (patch)
tree3fcebf40ed70e581d776a8a4c65923e8ec20e026 /library/core/src/task
parentReleasing progress-linux version 1.70.0+dfsg2-1~progress7.99u1. (diff)
downloadrustc-9835e2ae736235810b4ea1c162ca5e65c547e770.tar.xz
rustc-9835e2ae736235810b4ea1c162ca5e65c547e770.zip
Merging upstream version 1.71.1+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'library/core/src/task')
-rw-r--r--library/core/src/task/mod.rs2
-rw-r--r--library/core/src/task/poll.rs36
-rw-r--r--library/core/src/task/ready.rs61
-rw-r--r--library/core/src/task/wake.rs2
4 files changed, 4 insertions, 97 deletions
diff --git a/library/core/src/task/mod.rs b/library/core/src/task/mod.rs
index c5f89b9a2..3f0080e38 100644
--- a/library/core/src/task/mod.rs
+++ b/library/core/src/task/mod.rs
@@ -13,5 +13,3 @@ pub use self::wake::{Context, RawWaker, RawWakerVTable, Waker};
mod ready;
#[stable(feature = "ready_macro", since = "1.64.0")]
pub use ready::ready;
-#[unstable(feature = "poll_ready", issue = "89780")]
-pub use ready::Ready;
diff --git a/library/core/src/task/poll.rs b/library/core/src/task/poll.rs
index af5bf441b..0a0f702f6 100644
--- a/library/core/src/task/poll.rs
+++ b/library/core/src/task/poll.rs
@@ -3,7 +3,6 @@
use crate::convert;
use crate::ops::{self, ControlFlow};
use crate::result::Result;
-use crate::task::Ready;
/// Indicates whether a value is available or if the current task has been
/// scheduled to receive a wakeup instead.
@@ -95,38 +94,6 @@ impl<T> Poll<T> {
pub const fn is_pending(&self) -> bool {
!self.is_ready()
}
-
- /// Extracts the successful type of a [`Poll<T>`].
- ///
- /// When combined with the `?` operator, this function will
- /// propagate any [`Poll::Pending`] values to the caller, and
- /// extract the `T` from [`Poll::Ready`].
- ///
- /// # Examples
- ///
- /// ```rust
- /// #![feature(poll_ready)]
- ///
- /// use std::task::{Context, Poll};
- /// use std::future::{self, Future};
- /// use std::pin::Pin;
- ///
- /// pub fn do_poll(cx: &mut Context<'_>) -> Poll<()> {
- /// let mut fut = future::ready(42);
- /// let fut = Pin::new(&mut fut);
- ///
- /// let num = fut.poll(cx).ready()?;
- /// # drop(num);
- /// // ... use num
- ///
- /// Poll::Ready(())
- /// }
- /// ```
- #[inline]
- #[unstable(feature = "poll_ready", issue = "89780")]
- pub fn ready(self) -> Ready<T> {
- Ready(self)
- }
}
impl<T, E> Poll<Result<T, E>> {
@@ -247,8 +214,7 @@ impl<T, E> Poll<Option<Result<T, E>>> {
}
#[stable(feature = "futures_api", since = "1.36.0")]
-#[rustc_const_unstable(feature = "const_convert", issue = "88674")]
-impl<T> const From<T> for Poll<T> {
+impl<T> From<T> for Poll<T> {
/// Moves the value into a [`Poll::Ready`] to make a `Poll<T>`.
///
/// # Example
diff --git a/library/core/src/task/ready.rs b/library/core/src/task/ready.rs
index b1daf545f..495d72fd1 100644
--- a/library/core/src/task/ready.rs
+++ b/library/core/src/task/ready.rs
@@ -1,8 +1,3 @@
-use core::convert;
-use core::fmt;
-use core::ops::{ControlFlow, FromResidual, Try};
-use core::task::Poll;
-
/// Extracts the successful type of a [`Poll<T>`].
///
/// This macro bakes in propagation of [`Pending`] signals by returning early.
@@ -22,7 +17,7 @@ use core::task::Poll;
/// let fut = Pin::new(&mut fut);
///
/// let num = ready!(fut.poll(cx));
-/// # drop(num);
+/// # let _ = num;
/// // ... use num
///
/// Poll::Ready(())
@@ -44,7 +39,7 @@ use core::task::Poll;
/// Poll::Ready(t) => t,
/// Poll::Pending => return Poll::Pending,
/// };
-/// # drop(num);
+/// # let _ = num; // to silence unused warning
/// # // ... use num
/// #
/// # Poll::Ready(())
@@ -60,55 +55,3 @@ pub macro ready($e:expr) {
}
}
}
-
-/// Extracts the successful type of a [`Poll<T>`].
-///
-/// See [`Poll::ready`] for details.
-#[unstable(feature = "poll_ready", issue = "89780")]
-pub struct Ready<T>(pub(crate) Poll<T>);
-
-#[unstable(feature = "poll_ready", issue = "89780")]
-impl<T> Try for Ready<T> {
- type Output = T;
- type Residual = Ready<convert::Infallible>;
-
- #[inline]
- fn from_output(output: Self::Output) -> Self {
- Ready(Poll::Ready(output))
- }
-
- #[inline]
- fn branch(self) -> ControlFlow<Self::Residual, Self::Output> {
- match self.0 {
- Poll::Ready(v) => ControlFlow::Continue(v),
- Poll::Pending => ControlFlow::Break(Ready(Poll::Pending)),
- }
- }
-}
-
-#[unstable(feature = "poll_ready", issue = "89780")]
-impl<T> FromResidual for Ready<T> {
- #[inline]
- fn from_residual(residual: Ready<convert::Infallible>) -> Self {
- match residual.0 {
- Poll::Pending => Ready(Poll::Pending),
- }
- }
-}
-
-#[unstable(feature = "poll_ready", issue = "89780")]
-impl<T> FromResidual<Ready<convert::Infallible>> for Poll<T> {
- #[inline]
- fn from_residual(residual: Ready<convert::Infallible>) -> Self {
- match residual.0 {
- Poll::Pending => Poll::Pending,
- }
- }
-}
-
-#[unstable(feature = "poll_ready", issue = "89780")]
-impl<T> fmt::Debug for Ready<T> {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- f.debug_tuple("Ready").finish()
- }
-}
diff --git a/library/core/src/task/wake.rs b/library/core/src/task/wake.rs
index 808825326..7043ab5ff 100644
--- a/library/core/src/task/wake.rs
+++ b/library/core/src/task/wake.rs
@@ -232,7 +232,7 @@ impl fmt::Debug for Context<'_> {
///
/// [`Future::poll()`]: core::future::Future::poll
/// [`Poll::Pending`]: core::task::Poll::Pending
-#[repr(transparent)]
+#[cfg_attr(not(doc), repr(transparent))] // work around https://github.com/rust-lang/rust/issues/66401
#[stable(feature = "futures_api", since = "1.36.0")]
pub struct Waker {
waker: RawWaker,