mirror of
https://github.com/InsanusMokrassar/SauceNaoAPI.git
synced 2024-06-03 00:15:13 +00:00
22 lines
418 B
Kotlin
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()
|
||
|
}
|