This project aims to be the Scala Incubator project for Automatic-Resource-Management in the scala library
traverse
from cats/scalaz is actually safe here, probably need to write a custom method to make sure semantics are correct
Seq
def sequenceManagedResources[R, T[X] <: TraversableOnce[X]](managedResources: T[ManagedResource[R]])(implicit canBuildFrom: CanBuildFrom[T[ManagedResource[R]], R, T[R]]): ManagedResource[T[R]] = {
val builder = canBuildFrom(managedResources)
val initialBuilderResource = unitManaged(builder)
val finalManagedBuilder = managedResources.foldLeft(initialBuilderResource) { case (builderResource, managedR) ⇒
builderResource.flatMap { builder ⇒
managedR.map(r ⇒ builder += r)
}
}
finalManagedBuilder.map(_.result())
}
ManagedResource.sequence
though