rxrust 0.4.0

A Rust implementation of Reactive Extensions.
Documentation
use crate::prelude::*;
use std::thread;
use std::time::Duration;

pub(crate) fn new_thread_schedule<T: Send + 'static>(
  task: impl FnOnce(SharedSubscription, T) + Send + 'static,
  delay: Option<Duration>,
  state: T,
) -> SharedSubscription {
  let subscription = SharedSubscription::default();
  let mut c_subscription = subscription.clone();
  let task = move || {
    thread::spawn(move || {
      if !subscription.is_closed() {
        task(subscription, state);
      }
    });
  };
  if let Some(delay) = delay {
    c_subscription.add(delay_task(delay, task));
  } else {
    task();
  }
  c_subscription
}