]>
git.proxmox.com Git - rustc.git/blob - library/core/src/task/ready.rs
1 /// Extracts the successful type of a [`Poll<T>`].
3 /// This macro bakes in propagation of [`Pending`] signals by returning early.
5 /// [`Poll<T>`]: crate::task::Poll
6 /// [`Pending`]: crate::task::Poll::Pending
11 /// #![feature(ready_macro)]
13 /// use std::task::{ready, Context, Poll};
14 /// use std::future::{self, Future};
15 /// use std::pin::Pin;
17 /// pub fn do_poll(cx: &mut Context<'_>) -> Poll<()> {
18 /// let mut fut = future::ready(42);
19 /// let fut = Pin::new(&mut fut);
21 /// let num = ready!(fut.poll(cx));
29 /// The `ready!` call expands to:
32 /// # #![feature(ready_macro)]
33 /// # use std::task::{Context, Poll};
34 /// # use std::future::{self, Future};
35 /// # use std::pin::Pin;
37 /// # pub fn do_poll(cx: &mut Context<'_>) -> Poll<()> {
38 /// # let mut fut = future::ready(42);
39 /// # let fut = Pin::new(&mut fut);
41 /// let num = match fut.poll(cx) {
42 /// Poll::Ready(t) => t,
43 /// Poll::Pending => return Poll::Pending,
51 #[unstable(feature = "ready_macro", issue = "70922")]
52 #[rustc_macro_transparency = "semitransparent"]
53 pub macro ready($e
:expr
) {
55 $
crate::task
::Poll
::Ready(t
) => t
,
56 $
crate::task
::Poll
::Pending
=> {
57 return $
crate::task
::Poll
::Pending
;