diff options
Diffstat (limited to 'core/src/main/scala/com/softwaremill/sttp/MonadError.scala')
-rw-r--r-- | core/src/main/scala/com/softwaremill/sttp/MonadError.scala | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/core/src/main/scala/com/softwaremill/sttp/MonadError.scala b/core/src/main/scala/com/softwaremill/sttp/MonadError.scala index 77c6235..0dcc02c 100644 --- a/core/src/main/scala/com/softwaremill/sttp/MonadError.scala +++ b/core/src/main/scala/com/softwaremill/sttp/MonadError.scala @@ -41,7 +41,15 @@ object IdMonad extends MonadError[Id] { override protected def handleWrappedError[T](rt: Id[T])( h: PartialFunction[Throwable, Id[T]]): Id[T] = rt } +object TryMonad extends MonadError[Try] { + override def unit[T](t: T): Try[T] = Success(t) + override def map[T, T2](fa: Try[T])(f: (T) => T2): Try[T2] = fa.map(f) + override def flatMap[T, T2](fa: Try[T])(f: (T) => Try[T2]): Try[T2] = fa.flatMap(f) + override def error[T](t: Throwable): Try[T] = Failure(t) + override protected def handleWrappedError[T](rt: Try[T])( + h: PartialFunction[Throwable, Try[T]]): Try[T] = rt.recoverWith(h) +} class FutureMonad(implicit ec: ExecutionContext) extends MonadAsyncError[Future] { |