package wow.doge.mygame.utils

import monix.bio.IO
import monix.bio.Task
import monix.eval.Coeval

object IOUtils {
  def toTask[T](bio: IO[Throwable, T]) =
    monix.eval.Task.deferAction(implicit s => bio.to[monix.eval.Task])

  def toIO[T](task: monix.eval.Task[T]) =
    IO.deferAction(implicit s => IO.from(task))

  def fromCoevalEither[L, R](coeval: Coeval[Either[L, R]]) =
    coeval.to[Task].hideErrors.rethrow

}
