
effectie.instances.future.canRecover.scala Maven / Gradle / Ivy
package effectie.instances.future
import effectie.core.CanRecover
import scala.concurrent.{ExecutionContext, Future}
/** @author Kevin Lee
* @since 2021-11-03
*/
object canRecover {
implicit def futureCanRecover(implicit ec: ExecutionContext): CanRecover[Future] = new CanRecoverFuture
trait FutureCanRecover extends CanRecover[Future] {
implicit def EC0: ExecutionContext
@inline override def recoverFromNonFatalWith[A, AA >: A](
fa: => Future[A]
)(
handleError: PartialFunction[Throwable, Future[AA]]
): Future[AA] =
fa.recoverWith(handleError)
@SuppressWarnings(Array("org.wartremover.warts.Throw"))
@inline override def recoverFromNonFatal[A, AA >: A](
fa: => Future[A]
)(
handleError: PartialFunction[Throwable, AA]
): Future[AA] =
fa.recover(handleError)
}
class CanRecoverFuture(override implicit val EC0: ExecutionContext) extends FutureCanRecover
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy