diff options
Diffstat (limited to 'embassy-futures/src/block_on.rs')
| -rw-r--r-- | embassy-futures/src/block_on.rs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/embassy-futures/src/block_on.rs b/embassy-futures/src/block_on.rs index da90351ec..77695216c 100644 --- a/embassy-futures/src/block_on.rs +++ b/embassy-futures/src/block_on.rs | |||
| @@ -31,3 +31,15 @@ pub fn block_on<F: Future>(mut fut: F) -> F::Output { | |||
| 31 | } | 31 | } |
| 32 | } | 32 | } |
| 33 | } | 33 | } |
| 34 | |||
| 35 | /// Poll a future once. | ||
| 36 | pub fn poll_once<F: Future>(mut fut: F) -> Poll<F::Output> { | ||
| 37 | // safety: we don't move the future after this line. | ||
| 38 | let mut fut = unsafe { Pin::new_unchecked(&mut fut) }; | ||
| 39 | |||
| 40 | let raw_waker = RawWaker::new(ptr::null(), &VTABLE); | ||
| 41 | let waker = unsafe { Waker::from_raw(raw_waker) }; | ||
| 42 | let mut cx = Context::from_waker(&waker); | ||
| 43 | |||
| 44 | fut.as_mut().poll(&mut cx) | ||
| 45 | } | ||
