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

```