flurx 0.1.6

Create reactive asynchronous data flow
Documentation
#![allow(
    clippy::implicit_return,
    clippy::min_ident_chars,
    clippy::missing_docs_in_private_items,
    clippy::pub_use,
    clippy::question_mark_used,
    clippy::pub_with_shorthand,
    clippy::pub_without_shorthand,
    clippy::self_named_module_files,
    clippy::single_call_fn
)]

pub use scheduler::Scheduler;

pub mod selector;
pub mod task;

pub mod scheduler;
pub mod error;
#[cfg(feature = "reducer")]
pub mod store;
#[cfg(feature = "reducer")]
pub mod dispatch;
#[cfg(feature = "reducer")]
pub mod reducer;

pub mod prelude {
    pub use crate::{
        error::{AlreadyDroppedScheduler, FutureResult},
        scheduler::Scheduler,
        selector::*,
        task::ReactiveTask,
    };
    #[cfg(feature = "reducer")]
    pub use crate::dispatch::Dispatch;
    #[cfg(feature = "reducer")]
    pub use crate::reducer::{Reducer, RefReducer};
    #[cfg(feature = "reducer")]
    pub use crate::store::Store;
}

#[cfg(test)]
mod tests {
    use std::sync::{Arc, Mutex};

    #[derive(Default)]
    pub struct ResultEvent<T>(Arc<Mutex<T>>);


    impl<T> Clone for ResultEvent<T> {
        fn clone(&self) -> Self {
            Self(Arc::clone(&self.0))
        }
    }


    #[allow(unused)]
    pub fn result_event<T: Default>() -> (ResultEvent<T>, ResultEvent<T>) {
        let r1 = ResultEvent(Arc::new(Mutex::new(T::default())));
        let r2 = ResultEvent(Arc::clone(&r1.0));
        (r1, r2)
    }
}