rx 0.7.0

Reactive Extensions for D Programming Language.


To use this package, put the following dependency into your project's dependencies section:

dub.json
dub.sdl

Reactive Extensions for D Programming Language

Dub version MIT License Build Status Coverage Status

Overview

This is a library like Rx.NET for asynchronous or event based programs, based on the concept of OutputRange.

The operators' name is based on std.algorithm and ReactiveX.

Example
import rx;
import std.conv : to;
import std.range : iota, put;

void main()
{
    auto subject = new SubjectObject!int;

    string[] result;
    auto disposable = subject.filter!(n => n % 2 == 0).map!(o => to!string(o))
        .doSubscribe!(text => result ~= text);

    scope (exit)
        disposable.dispose();

    put(subject, iota(10));

    assert(result == ["0", "2", "4", "6", "8"]);
}

And more examples or Documents

Usage

Setting dependencies in dub.json

{
    ...
    "dependencies": {
        "rx": "~>0.7.0"
    }
}

or dub.sdl

dependency "rx" version="~>0.1.0"

Concepts

Basic interfaces

All operators are written using template and struct for optimization. this example is a binary interface like std.range.interfaces.

//module rx.disposable
interface Disposable
{
    void dispose();
}

//module rx.observer
interface Observer(E) : OutputRange!E
{
    //void put(E obj); //inherits from OutputRange!E
    void completed();
    void failure(Exception e);
}

//module rx.observable
interface Observable(E)
{
    alias ElementType = E;
    Disposable subscribe(Observer!E observer);
}

License

This library is under the MIT License. Some code is borrowed from Rx.NET.

Future work

  • generic observable factory
  • create, start, timer, interval
  • more subjects
  • publish, replay
  • more algorithms
  • window, combineLatest, zip
  • more test
  • more documents
Authors:
  • lempiji
Dependencies:
none
Versions:
0.11.0 2019-May-03
0.10.1 2019-Feb-09
0.10.0 2019-Jan-26
0.9.0 2018-Jul-29
0.8.0 2018-Mar-25
Show all 26 versions
Download Stats:
  • 0 downloads today

  • 7 downloads this week

  • 17 downloads this month

  • 5212 downloads total

Score:
1.9
Short URL:
rx.dub.pm