another_rxrust/utils/
ready_set_go.rs

1use crate::prelude::*;
2
3pub fn ready_set_go<'a, F, Item>(
4  f: F,
5  o: Observable<'a, Item>,
6) -> Observable<'a, Item>
7where
8  F: Fn() + Send + Sync + 'a,
9  Item: Clone + Send + Sync,
10{
11  Observable::create(move |s| {
12    o.inner_subscribe(s);
13    f();
14  })
15}
16#[cfg(test)]
17mod test {
18  use crate::prelude::*;
19
20  #[test]
21  fn basic() {
22    let s = subjects::Subject::<i32>::new();
23    let s_f = s.clone();
24    utils::ready_set_go(
25      move || {
26        s_f.next(1);
27        s_f.next(2);
28        s_f.complete();
29      },
30      s.observable(),
31    )
32    .subscribe(
33      print_next_fmt!("{}"),
34      print_error!(),
35      print_complete!(),
36    );
37  }
38}