SchedulerEffect

class Object
trait Matchable
class Any

Value members

Concrete methods

def clock[F[_]](source: Scheduler)(F: Sync[F]): Clock[F]

Derives a cats.effect.Clock from Scheduler for any data type that has a cats.effect.LiftIO implementation.

Derives a cats.effect.Clock from Scheduler for any data type that has a cats.effect.LiftIO implementation.

def contextShift[F[_]](source: Scheduler)(F: Async[F]): ContextShift[F]

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"))
   }
def timer[F[_]](source: Scheduler)(F: Concurrent[F]): Timer[F]

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!"))
 }
def timerLiftIO[F[_]](source: Scheduler)(F: LiftIO[F]): Timer[F]

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!"))
 }