about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--library/core/src/future/mod.rs4
-rw-r--r--library/core/src/future/pending.rs20
-rw-r--r--library/core/src/future/ready.rs13
-rw-r--r--library/core/src/task/ready.rs2
-rw-r--r--library/std/src/future.rs2
-rw-r--r--library/std/src/lib.rs1
6 files changed, 24 insertions, 18 deletions
diff --git a/library/core/src/future/mod.rs b/library/core/src/future/mod.rs
index 6d1ad9db744..a69c4a0a6e9 100644
--- a/library/core/src/future/mod.rs
+++ b/library/core/src/future/mod.rs
@@ -21,9 +21,9 @@ pub use self::future::Future;
 #[unstable(feature = "into_future", issue = "67644")]
 pub use into_future::IntoFuture;
 
-#[unstable(feature = "future_readiness_fns", issue = "70921")]
+#[stable(feature = "future_readiness_fns", since = "1.47.0")]
 pub use pending::{pending, Pending};
-#[unstable(feature = "future_readiness_fns", issue = "70921")]
+#[stable(feature = "future_readiness_fns", since = "1.47.0")]
 pub use ready::{ready, Ready};
 
 #[unstable(feature = "future_poll_fn", issue = "72302")]
diff --git a/library/core/src/future/pending.rs b/library/core/src/future/pending.rs
index 74887b68aa0..c1a4e0cda03 100644
--- a/library/core/src/future/pending.rs
+++ b/library/core/src/future/pending.rs
@@ -1,3 +1,4 @@
+use crate::fmt::{self, Debug};
 use crate::future::Future;
 use crate::marker;
 use crate::pin::Pin;
@@ -10,8 +11,7 @@ use crate::task::{Context, Poll};
 /// documentation for more.
 ///
 /// [`pending`]: fn.pending.html
-#[unstable(feature = "future_readiness_fns", issue = "70921")]
-#[derive(Debug)]
+#[stable(feature = "future_readiness_fns", since = "1.47.0")]
 #[must_use = "futures do nothing unless you `.await` or poll them"]
 pub struct Pending<T> {
     _data: marker::PhantomData<T>,
@@ -23,7 +23,6 @@ pub struct Pending<T> {
 /// # Examples
 ///
 /// ```no_run
-/// #![feature(future_readiness_fns)]
 /// use core::future;
 ///
 /// # async fn run() {
@@ -32,12 +31,12 @@ pub struct Pending<T> {
 /// unreachable!();
 /// # }
 /// ```
-#[unstable(feature = "future_readiness_fns", issue = "70921")]
+#[stable(feature = "future_readiness_fns", since = "1.47.0")]
 pub fn pending<T>() -> Pending<T> {
     Pending { _data: marker::PhantomData }
 }
 
-#[unstable(feature = "future_readiness_fns", issue = "70921")]
+#[stable(feature = "future_readiness_fns", since = "1.47.0")]
 impl<T> Future for Pending<T> {
     type Output = T;
 
@@ -46,10 +45,17 @@ impl<T> Future for Pending<T> {
     }
 }
 
-#[unstable(feature = "future_readiness_fns", issue = "70921")]
+#[stable(feature = "future_readiness_fns", since = "1.47.0")]
 impl<T> Unpin for Pending<T> {}
 
-#[unstable(feature = "future_readiness_fns", issue = "70921")]
+#[stable(feature = "future_readiness_fns", since = "1.47.0")]
+impl<T> Debug for Pending<T> {
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        f.debug_struct("Pending").finish()
+    }
+}
+
+#[stable(feature = "future_readiness_fns", since = "1.47.0")]
 impl<T> Clone for Pending<T> {
     fn clone(&self) -> Self {
         pending()
diff --git a/library/core/src/future/ready.rs b/library/core/src/future/ready.rs
index 31b39d7fb6c..ddae6cfed4b 100644
--- a/library/core/src/future/ready.rs
+++ b/library/core/src/future/ready.rs
@@ -8,15 +8,15 @@ use crate::task::{Context, Poll};
 /// documentation for more.
 ///
 /// [`ready`]: fn.ready.html
-#[unstable(feature = "future_readiness_fns", issue = "70921")]
+#[stable(feature = "future_readiness_fns", since = "1.47.0")]
 #[derive(Debug, Clone)]
 #[must_use = "futures do nothing unless you `.await` or poll them"]
 pub struct Ready<T>(Option<T>);
 
-#[unstable(feature = "future_readiness_fns", issue = "70921")]
+#[stable(feature = "future_readiness_fns", since = "1.47.0")]
 impl<T> Unpin for Ready<T> {}
 
-#[unstable(feature = "future_readiness_fns", issue = "70921")]
+#[stable(feature = "future_readiness_fns", since = "1.47.0")]
 impl<T> Future for Ready<T> {
     type Output = T;
 
@@ -28,10 +28,13 @@ impl<T> Future for Ready<T> {
 
 /// Creates a future that is immediately ready with a value.
 ///
+/// Futures created through this function are functionally similar to those
+/// created through `async {}`. The main difference is that futures created
+/// through this function are named and implement `Unpin`.
+///
 /// # Examples
 ///
 /// ```
-/// #![feature(future_readiness_fns)]
 /// use core::future;
 ///
 /// # async fn run() {
@@ -39,7 +42,7 @@ impl<T> Future for Ready<T> {
 /// assert_eq!(a.await, 1);
 /// # }
 /// ```
-#[unstable(feature = "future_readiness_fns", issue = "70921")]
+#[stable(feature = "future_readiness_fns", since = "1.47.0")]
 pub fn ready<T>(t: T) -> Ready<T> {
     Ready(Some(t))
 }
diff --git a/library/core/src/task/ready.rs b/library/core/src/task/ready.rs
index d4e733eb2bc..e221aaf3fd6 100644
--- a/library/core/src/task/ready.rs
+++ b/library/core/src/task/ready.rs
@@ -5,7 +5,6 @@
 /// # Examples
 ///
 /// ```
-/// #![feature(future_readiness_fns)]
 /// #![feature(ready_macro)]
 ///
 /// use core::task::{ready, Context, Poll};
@@ -27,7 +26,6 @@
 /// The `ready!` call expands to:
 ///
 /// ```
-/// # #![feature(future_readiness_fns)]
 /// # #![feature(ready_macro)]
 /// #
 /// # use core::task::{Context, Poll};
diff --git a/library/std/src/future.rs b/library/std/src/future.rs
index 89dd9fb9b2c..5ff74e55754 100644
--- a/library/std/src/future.rs
+++ b/library/std/src/future.rs
@@ -9,7 +9,7 @@ pub use core::future::Future;
 pub use core::future::{from_generator, get_context, ResumeTy};
 
 #[doc(inline)]
-#[unstable(feature = "future_readiness_fns", issue = "70921")]
+#[stable(feature = "future_readiness_fns", since = "1.47.0")]
 pub use core::future::{pending, ready, Pending, Ready};
 
 #[doc(inline)]
diff --git a/library/std/src/lib.rs b/library/std/src/lib.rs
index f0487e0dff1..c820df5d7cc 100644
--- a/library/std/src/lib.rs
+++ b/library/std/src/lib.rs
@@ -268,7 +268,6 @@
 #![feature(external_doc)]
 #![feature(fn_traits)]
 #![feature(format_args_nl)]
-#![feature(future_readiness_fns)]
 #![feature(gen_future)]
 #![feature(generator_trait)]
 #![feature(global_asm)]