RxRs - Reactive Extensions for Rust
WIP: rxrs is under heavy development & not ready for production
```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.subscribe(
|v: String| output.borrow_mut().push_str(&v),
|e| output.borrow_mut().push_str("ok")
);
for i in 0..10 {
subj.next(i);
}
assert_eq!("*0*2*4*6ok", &*output.borrow());
}
```
```bash src ├── observable.rs ├── observer.rs ├── error.rs ├── by.rs ├── unsub.rs ├── lib.rs ├── fac │ ├── iter.rs │ ├── merge.rs │ ├── mod.rs │ ├── of.rs │ └── timer.rs ├── op │ ├── filter.rs │ ├── map.rs │ ├── merge.rs │ ├── mod.rs │ ├── skip.rs │ ├── start.rs │ ├── take.rs │ └── until.rs ├── scheduler │ ├── currentthreadscheduler.rs │ ├── eventloopscheduler.rs │ ├── mod.rs │ └── newthreadscheduler.rs ├── subject │ ├── behaviorsubject.rs │ ├── mod.rs │ └── subject.rs ├── sync │ ├── act.rs │ ├── anysendsync.rs │ ├── mod.rs │ ├── respinlock.rs │ ├── ssmark.rs │ └── yesno.rs └── util ├── clones.rs └── mod.rs
```