RxRs - Reactive Extensions for Rust
```rust use rxrs::*;
#[test]
pub fn greet()
{
let output = RefCell::new(String::new());
let subj = Rc::new(Subject::<NO, i32>::new());
let evens: impl Observable<NO, Val<String>> = subj.clone()
.filter(|v:&_| v%2 == 0 )
.take(4)
.map(|v:&_| format!("*{}", v));
evens.sub(
|v: String | output.borrow_mut().push_str(&v),
|e: Option<&_>| output.borrow_mut().push_str("ok")
);
for i in 0..10 {
subj.next(i);
}
assert_eq!("*0*2*4*6ok", &*output.borrow());
}
```
```bash src ├── act.rs ├── acthelpers.rs ├── fac │  ├── mod.rs │  ├── of.rs │  └── timer.rs ├── lib.rs ├── observables.rs ├── op │  ├── filter.rs │  ├── map.rs │  ├── mod.rs │  ├── take.rs │  └── until.rs ├── scheduler │  ├── currentthreadscheduler.rs │  ├── eventloopscheduler.rs │  ├── mod.rs │  └── newthreadscheduler.rs ├── subject │  ├── behaviorsubject.rs │  ├── mod.rs │  └── subject.rs ├── sync │  ├── mod.rs │  └── respinlock.rs ├── unsub.rs └── util ├── alias.rs ├── anysendsync.rs ├── by.rs ├── clones.rs ├── mod.rs └── yesno.rs
```