Skip to content

Instantly share code, notes, and snippets.

@elizarov
elizarov / Debounce.kt
Last active August 26, 2019 00:19
Debounce
import kotlinx.coroutines.experimental.DefaultDispatcher
import kotlinx.coroutines.experimental.channels.ReceiveChannel
import kotlinx.coroutines.experimental.channels.consumeEach
import kotlinx.coroutines.experimental.channels.produce
import kotlinx.coroutines.experimental.delay
import kotlinx.coroutines.experimental.runBlocking
import kotlin.coroutines.experimental.CoroutineContext
fun <T> ReceiveChannel<T>.debounce(
wait: Long = 300,
@elizarov
elizarov / Result.kt
Last active June 16, 2020 17:04
Result for Kotlin
class Result<T> private constructor(private val result: Any?) {
// discovery
val isFailure: Boolean get() = result is Failure
val isSuccess: Boolean get() = result !is Failure
// value retrieval
fun get(): T =
if (result is Failure) throw result.exception