arrow-fx-coroutines / arrow.fx.coroutines / Resource / invoke

invoke

operator fun <A> invoke(acquire: suspend () -> A, release: suspend (A, ExitCase) -> Unit): Resource<A>

Construct a Resource from a allocating function acquire and a release function release.

import arrow.fx.coroutines.*

suspend fun acquireResource(): Int = 42.also { println("Getting expensive resource") }
suspend fun releaseResource(r: Int): Unit = println("Releasing expensive resource: $r")

suspend fun main(): Unit {
  //sampleStart
  val resource = Resource(::acquireResource, ::releaseResource)
  resource.use {
    println("Expensive resource under use! $it")
  }
  //sampleEnd
}

operator fun <A> invoke(acquire: suspend () -> A, release: suspend (A) -> Unit): Resource<A>

Construct a Resource from a allocating function acquire and a release function release.

See Also

use

Do you like Arrow?

Arrow Org
<