SauceNaoAPI/src/commonMain/kotlin/com/insanusmokrassar/SauceNaoAPI/utils/SauceCloseable.kt

22 lines
418 B
Kotlin

package com.insanusmokrassar.SauceNaoAPI.utils
import kotlinx.coroutines.supervisorScope
interface SauceCloseable {
fun close()
}
fun <T> SauceCloseable.use(block: (SauceCloseable) -> T): T = try {
block(this)
} finally {
close()
}
suspend fun <T> SauceCloseable.useSafe(block: suspend (SauceCloseable) -> T): T = try {
supervisorScope {
block(this@useSafe)
}
} finally {
close()
}