ensure Not Null
Deprecated
Use the arrow.core.raise.Raise type instead, which is more general and can be used to and can be used to raise typed errors or _logical failures_ The Raise<R> type is source compatible, a simple find & replace of arrow.core.continuations.* to arrow.core.raise.* will do the trick.
Replace with
import arrow.core.raise.ensureNotNull
ensureNotNull(value, shift)
Ensure that value is not null
. if it's non-null it will be smart-casted and returned if it's false
it will shift
with the provided value R. Monadic version of kotlin.requireNotNull.
import arrow.core.continuations.eagerEffect
import arrow.core.continuations.ensureNotNull
import arrow.core.left
import arrow.core.right
import io.kotest.matchers.shouldBe
fun main() {
val failure = "failed"
val int: Int? = null
eagerEffect<String, Int> {
ensureNotNull(int) { failure }
}.toEither() shouldBe (int?.right() ?: failure.left())
}
Deprecated
Use the arrow.core.raise.Raise type instead, which is more general and can be used to and can be used to raise typed errors or _logical failures_ The Raise<R> type is source compatible, a simple find & replace of arrow.core.continuations.* to arrow.core.raise.* will do the trick.
Replace with
import arrow.core.raise.ensureNotNull
ensureNotNull(value, shift)
Ensure that value is not null
. if it's non-null it will be smart-casted and returned if it's false
it will shift
with the provided value R. Monadic version of kotlin.requireNotNull.
import arrow.core.continuations.effect
import arrow.core.continuations.ensureNotNull
import arrow.core.left
import arrow.core.right
import io.kotest.matchers.shouldBe
suspend fun main() {
val failure = "failed"
val int: Int? = null
effect<String, Int> {
ensureNotNull(int) { failure }
}.toEither() shouldBe (int?.right() ?: failure.left())
}