aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorxoviat <[email protected]>2023-06-17 08:11:55 -0500
committerxoviat <[email protected]>2023-06-17 08:11:55 -0500
commit9e8de5f596ffa9036c2343ccc1e69f471a4770eb (patch)
tree42719701eb5d7d81b078f480c7ec0d17e701420a
parente1161dfc80e583719bf486d112fa84c948b71fc1 (diff)
fut: add poll_once
-rw-r--r--embassy-futures/src/block_on.rs12
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.
36pub 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}