flurx 0.1.6

Create reactive asynchronous data flow
Documentation
use core::future::Future;
use core::pin::Pin;
use core::task::{Context, Poll};

use crate::scheduler::Reactor;

#[repr(transparent)]
pub(crate) struct ReactorsFuture<'state, 'future>(pub(crate) &'future mut Option<Reactor<'state>>);


impl<'state, 'future> Future for ReactorsFuture<'state, 'future>

{
    type Output = ();

    #[inline(always)]
    fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
        if self
            .0
            .as_mut()
            .map(|reactor|reactor.as_mut().poll(cx).is_ready())
            .unwrap_or(false){
            self.0.take();
        }
 
        Poll::Ready(())
    }
}