hooks_core/ext/
next_update.rs

1use std::{future::Future, pin::Pin, task::Poll};
2
3use crate::HookPollNextUpdate;
4
5/// A future which polls [`HookPollNextUpdate::poll_next_update`].
6/// See [`HookExt::next_update`](crate::HookPollNextUpdateExt::next_update).
7#[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}