rxrust 0.1.0

A Rust implementation of Reactive Extensions.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use crate::scheduler::Scheduler;
use std::sync::mpsc::channel;
use std::thread;

pub struct ThreadScheduler {}

impl Scheduler for ThreadScheduler {
  fn schedule<T: Send + Sync + 'static, R: Send + Sync + 'static>(
    &self,
    task: impl FnOnce(Option<T>) -> R + Send + 'static,
    state: Option<T>,
  ) -> R {
    let (sender, receiver) = channel();
    thread::spawn(move || sender.send(task(state)).unwrap());
    receiver.recv().unwrap()
  }
}