In Scala, .pure[Future]
and Future.successful
serve similar purposes, incase you are wondering which one to use go for anyone as there is not much of a difference but they are associated with different libraries and have some differences in their usage:
Cats Library (.pure[Future]
):
.pure
is a method provided by the Cats library, which is a popular library for functional programming in Scala.- It is not part of the standard Scala library.
- Cats provides abstractions for working with different effect types, including
Future
. .pure
is used to lift a pure (non-effectful) value into a specified effect type, such asFuture
.- It is more aligned with functional programming concepts and type classes.
import cats.implicits._
import scala.concurrent.Future
val value: Int = 42
val futureValue: Future[Int] = value.pure[Future]
Standard Library (Future.successful
):
Future.successful
is part of the standard Scala library, and it’s used to create a successful (completed)Future
with a specified value.- It’s simple and straightforward to use, as it doesn’t require any additional libraries or imports.
- It’s commonly used for creating successful
Future
instances.
import scala.concurrent.Future
val value: Int = 42
val futureValue: Future[Int] = Future.successful(value)
In summary, if you’re using the Cats library or are working within a functional programming context, you might prefer .pure[Future]
to lift values into a Future
. However, if you’re looking for a simple and standard way to create a successful Future
, you can use Future.successful
. The choice between them depends on your project’s dependencies and your preferred style of programming.