问题描述
如何将可能成功或失败的Future[A]
转换为EitherT[Future,Throwable,A]
或Future[Try[A]]
。
future.transform(result => Success(result))
EitherT(future.transform(result => Success(result.toEither)))
标准库中或Cats中是否有实现上述转换的方法?
解决方法
例如,
ApplicativeError
中的 attemptT
可以将Future[A]
转换为EitherT[Future,Throwable,A]
import cats.data.EitherT
import cats.implicits._
val f: Future[A] = ???
val v: EitherT[Future,A] = f.attemptT