aboutsummaryrefslogtreecommitdiff
path: root/coroutine-utils
diff options
context:
space:
mode:
Diffstat (limited to 'coroutine-utils')
-rw-r--r--coroutine-utils/src/main/kotlin/app/passwordstore/util/coroutines/RunSuspendCatching.kt51
1 files changed, 0 insertions, 51 deletions
diff --git a/coroutine-utils/src/main/kotlin/app/passwordstore/util/coroutines/RunSuspendCatching.kt b/coroutine-utils/src/main/kotlin/app/passwordstore/util/coroutines/RunSuspendCatching.kt
deleted file mode 100644
index 677c2bc3..00000000
--- a/coroutine-utils/src/main/kotlin/app/passwordstore/util/coroutines/RunSuspendCatching.kt
+++ /dev/null
@@ -1,51 +0,0 @@
-@file:OptIn(ExperimentalContracts::class)
-@file:Suppress("RedundantSuspendModifier")
-
-package app.passwordstore.util.coroutines
-
-import com.github.michaelbull.result.Err
-import com.github.michaelbull.result.Ok
-import com.github.michaelbull.result.Result
-import kotlin.contracts.ExperimentalContracts
-import kotlin.contracts.InvocationKind
-import kotlin.contracts.contract
-import kotlinx.coroutines.CancellationException
-
-/**
- * Calls the specified function [block] and returns its encapsulated result if invocation was
- * successful, catching any [Throwable] except [CancellationException] that was thrown from the
- * [block] function execution and encapsulating it as a failure.
- */
-@OptIn(ExperimentalContracts::class)
-public suspend inline fun <V> runSuspendCatching(block: () -> V): Result<V, Throwable> {
- contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) }
-
- return try {
- Ok(block())
- } catch (e: CancellationException) {
- throw e
- } catch (e: Throwable) {
- Err(e)
- }
-}
-
-/**
- * Calls the specified function [block] with [this] value as its receiver and returns its
- * encapsulated result if invocation was successful, catching any [Throwable] except
- * [CancellationException] that was thrown from the [block] function execution and encapsulating it
- * as a failure.
- */
-@OptIn(ExperimentalContracts::class)
-public suspend inline infix fun <T, V> T.runSuspendCatching(
- block: T.() -> V
-): Result<V, Throwable> {
- contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) }
-
- return try {
- Ok(block())
- } catch (e: CancellationException) {
- throw e
- } catch (e: Throwable) {
- Err(e)
- }
-}