diff options
| author | xoviat <[email protected]> | 2023-06-17 08:11:55 -0500 |
|---|---|---|
| committer | xoviat <[email protected]> | 2023-06-17 08:11:55 -0500 |
| commit | 9e8de5f596ffa9036c2343ccc1e69f471a4770eb (patch) | |
| tree | 42719701eb5d7d81b078f480c7ec0d17e701420a /embassy-futures | |
| parent | e1161dfc80e583719bf486d112fa84c948b71fc1 (diff) | |
fut: add poll_once
Diffstat (limited to 'embassy-futures')
| -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 | } | ||
