resources: Resource.unit, as an alias for Resource.successful(()). (#4786)

* resources: `Resource.unit`, as an alias for `Resource.successful(())`.

CHANGELOG_BEGIN
CHANGELOG_END

* resources: Add `ResourceOwner.unit`.
This commit is contained in:
Samir Talwar 2020-03-03 17:47:54 +01:00 committed by GitHub
parent 536e793a44
commit a73b7459a7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 13 additions and 4 deletions

View File

@ -284,7 +284,7 @@ final class SandboxServer(
ResourceOwner.forTry(() =>
Try(source.runWith(Sink.foreachAsync(1)(indexAndWriteService.publishHeartbeat)))
.map(_ => ()))))
.getOrElse(ResourceOwner.successful(()))
.getOrElse(ResourceOwner.unit)
.acquire()
apiServer <- new LedgerApiServer(
(mat: Materializer, esf: ExecutionSequencerFactory) =>

View File

@ -154,7 +154,7 @@ object SandboxIndexAndWriteService {
}
).map(_ => ())
case _ =>
Resource.successful(())
Resource.unit
}
}
}

View File

@ -151,6 +151,12 @@ object Resource {
def fromFuture[T](future: Future[T])(implicit executionContext: ExecutionContext): Resource[T] =
apply(future)(_ => Future.successful(()))
/**
* Produces a [[Resource]] that has already succeeded with the [[Unit]] value.
*/
def unit(implicit executionContext: ExecutionContext): Resource[Unit] =
Resource.fromFuture(Future.unit)
/**
* Produces a [[Resource]] that has already succeeded with a given value.
*/
@ -198,7 +204,7 @@ object Resource {
implicit executionContext: ExecutionContext,
): Resource[Unit] =
seq
.foldLeft(Resource.successful(()))((builderResource, elementResource) =>
.foldLeft(Resource.unit)((builderResource, elementResource) =>
for {
_ <- builderResource
_ <- elementResource

View File

@ -72,6 +72,9 @@ trait ResourceOwner[+A] {
* Convenient [[ResourceOwner]] factory and sequencing methods.
*/
object ResourceOwner {
def unit: ResourceOwner[Unit] =
new FutureResourceOwner(() => Future.unit)
def successful[T](value: T): ResourceOwner[T] =
new FutureResourceOwner(() => Future.successful(value))
@ -124,7 +127,7 @@ object ResourceOwner {
implicit executionContext: ExecutionContext,
): ResourceOwner[Unit] =
seq
.foldLeft(ResourceOwner.successful(()))((builderResource, elementResource) =>
.foldLeft(ResourceOwner.unit)((builderResource, elementResource) =>
for {
_ <- builderResource
_ <- elementResource