hooks_core/ext/
next_update.rs1use std::{future::Future, pin::Pin, task::Poll};
2
3use crate::HookPollNextUpdate;
4
5#[must_use = "futures do nothing unless you `.await` or poll them"]
8pub struct NextUpdate<'a, H: ?Sized> {
9 hook: &'a mut H,
10}
11
12impl<'a, H: ?Sized> NextUpdate<'a, H> {
13 pub fn new(hook: &'a mut H) -> Self {
14 Self { hook }
15 }
16}
17
18impl<'a, H: HookPollNextUpdate + Unpin + ?Sized> Future for NextUpdate<'a, H> {
19 type Output = bool;
20
21 #[inline]
22 fn poll(self: Pin<&mut Self>, cx: &mut std::task::Context<'_>) -> Poll<Self::Output> {
23 let hook = &mut self.get_mut().hook;
24 Pin::new(hook).poll_next_update(cx)
25 }
26}