another_rxrust/schedulers/
default_scheduler.rs1use super::scheduler::IScheduler;
2
3#[derive(Clone)]
4pub struct DefaultScheduler {}
5
6impl DefaultScheduler {
7 pub fn new() -> DefaultScheduler {
8 DefaultScheduler {}
9 }
10}
11
12impl IScheduler<'_> for DefaultScheduler {
13 fn post<F>(&self, f: F)
14 where
15 F: Fn() + Send + Sync,
16 {
17 f();
18 }
19 fn abort(&self) {}
20}
21
22pub fn default_scheduler() -> fn() -> DefaultScheduler {
23 || DefaultScheduler::new()
24}
25
26#[cfg(test)]
27mod test {
28 use crate::prelude::*;
29 use scheduler::IScheduler;
30 use std::{thread, time};
31
32 #[test]
33 fn basic() {
34 {
35 let s = schedulers::default_scheduler()();
36
37 s.post(|| {
38 println!("#1 start");
39 thread::sleep(time::Duration::from_millis(500));
40 println!("#1 end");
41 });
42
43 s.post(|| {
44 println!("#2 start");
45 thread::sleep(time::Duration::from_millis(500));
46 println!("#2 end");
47 });
48
49 s.post(|| {
50 println!("#3 start");
51 thread::sleep(time::Duration::from_millis(500));
52 println!("#3 end");
53 });
54 }
55 }
56}