hooks/effect/
hook_on_next_poll.rs1use super::{inner::EffectInner, EffectForNoneDependency};
2
3pub struct EffectOnNextPoll<E: EffectForNoneDependency>(EffectInner<E, E::Cleanup>);
4
5impl<E: EffectForNoneDependency> std::fmt::Debug for EffectOnNextPoll<E> {
6 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
7 f.debug_tuple("EffectOnNextPoll").field(&self.0).finish()
8 }
9}
10
11impl<E: EffectForNoneDependency> Default for EffectOnNextPoll<E> {
12 #[inline]
13 fn default() -> Self {
14 Self(Default::default())
15 }
16}
17
18impl<E: EffectForNoneDependency> Unpin for EffectOnNextPoll<E> {}
19
20hooks_core::impl_hook![
21 impl<E: EffectForNoneDependency> EffectOnNextPoll<E> {
22 #[inline]
23 fn unmount(self) {
24 self.get_mut().0.unmount()
25 }
26 #[inline]
27 fn poll_next_update(self) {
28 let this = self.get_mut();
29 this.0.cleanup_and_effect();
30 std::task::Poll::Ready(false)
31 }
32 #[inline(always)]
33 fn use_hook(self) -> () {}
34 }
35];
36
37pub struct UseEffectOnNextPoll<E: EffectForNoneDependency>(pub E);
42pub use UseEffectOnNextPoll as use_effect_on_next_poll;
43
44hooks_core::impl_hook![
45 impl<E: EffectForNoneDependency> UseEffectOnNextPoll<E> {
46 #[inline]
47 fn into_hook(self) -> EffectOnNextPoll<E> {
48 EffectOnNextPoll(EffectInner::new_registered(self.0))
49 }
50 #[inline]
51 fn update_hook(self, hook: _) {
52 hook.get_mut().0.register_effect(self.0)
53 }
54 #[inline]
55 fn h(self, hook: EffectOnNextPoll<E>) {
56 hooks_core::UpdateHook::update_hook(self, hook)
57 }
58 }
59];