RxArrow
RxArrow copied to clipboard
RxJava extensions for Arrow's Data Types
RxArrow 
RxArrow is a collection of RxJava extensions and typealiases Arrow's Data Types.
Table of Contents
- Why Z
- Usage
- Setup
- Compatibility
- Contributing
- License
Why Z
I use Z
as a postfix for all typealiases because I was influenced by ZIO.
Usage
Observable<Either<E, A>> aka ObservableZ<E, A>
ObservableZ<E, A>
is a type alias for Observable<Either<E, A>>
. It has a convenient extension functions to make life easier when working with Observable<Either<E, A>>
.
Observable.just("error".left(), 23.right()) // Left(error), Right(24): ObservableZ<String, Int>
.mapZ { it + 2 } // Left("error"), Right(25): ObservableZ<String, Int>
.mapLeft { it.reversed() } // Left("rorre"), Right(25): ObservableZ<String, Int>
.mapLeft { SomethingWentWrong } // Left(SomethingWentWrong), Right(25): ObservableZ<SomethingWentWrong, Int>
.flatMapZ { Observable.just(it * it) } // Left(SomethingWentWrong), Right(625): ObservableZ<SomethingWentWrong, Int>
.flatMapSingleEither { divide(it, 0) } // Left(SomethingWentWrong), Left(DevidedByZero): ObservableZ<Error, Int>
.subscribe { either -> println("$either") }
Single<Either<E, A>> aka SingleZ<E, A>
Similar to ObservableZ
Maybe<Either<E, A>> aka MaybeZ<E, A>
Similar to ObservableZ
Setup
You can get RxArrow
by using Jitpack.
repositories {
jcenter()
maven { url 'https://jitpack.io' }
}
implementation "io.arrow-kt:arrow-core:$arrow_version"
implementation "com.github.lenguyenthanh:RxArrow:$rxarrow"
Compatibility
Supports RxJava2 and Arrow version 0.13.2
.
Contributing
Any bug reports, feature requests, questions and pull requests are very welcome.