Derives a cats.effect.Clock
from Scheduler for any
data type that has a cats.effect.LiftIO
implementation.
Derives a cats.effect.ContextShift
from Scheduler for any
data type that has a cats.effect.Effect
implementation.
Derives a cats.effect.ContextShift
from Scheduler for any
data type that has a cats.effect.Effect
implementation.
import monix.execution.Scheduler import java.util.concurrent.Executors import scala.concurrent.ExecutionContext import cats.effect._ val contextShift: ContextShift[IO] = SchedulerEffect.contextShift[IO](Scheduler.global) val executor = Executors.newCachedThreadPool() val ec = ExecutionContext.fromExecutor(executor) contextShift.evalOn(ec)(IO(println("I'm on different thread pool!"))) .flatMap { _ => IO(println("I came back to default")) }
Derives a cats.effect.Timer
from Scheduler for any
data type that has a cats.effect.Concurrent
type class
instance.
Derives a cats.effect.Timer
from Scheduler for any
data type that has a cats.effect.Concurrent
type class
instance.
import monix.execution.Scheduler import cats.effect._ import scala.concurrent.duration._ // Needed for ContextShift[IO] implicit def shift: ContextShift[IO] = SchedulerEffect.contextShift[IO](Scheduler.global)(IO.ioEffect) implicit val timer: Timer[IO] = SchedulerEffect.timer[IO](Scheduler.global) IO.sleep(10.seconds).flatMap { _ => IO(println("Delayed hello!")) }
Derives a cats.effect.Timer
from Scheduler for any
data type that has a cats.effect.LiftIO
instance.
Derives a cats.effect.Timer
from Scheduler for any
data type that has a cats.effect.LiftIO
instance.
This is the relaxed timer method, needing only LiftIO
to work, by piggybacking on cats.effect.IO
.
import monix.execution.Scheduler import cats.effect._ import scala.concurrent.duration._ implicit val timer: Timer[IO] = SchedulerEffect.timerLiftIO[IO](Scheduler.global) IO.sleep(10.seconds).flatMap { _ => IO(println("Delayed hello!")) }