我最近将我的应用转换为继承IOApp
所述的猫的here。我阅读了该文档:
Timer [IO]依赖项已由IOApp提供,因此JVM不再需要隐式的ExecutionContext在范围内
但是,我正在与确实需要ExecutionContext
的其他几个库(即http4s)进行交互。是否有推荐的方法来获取这种类型的应用程序?好的import scala.concurrent.ExecutionContext.Implicits.global
与提供的Timer[IO]
玩起来不错吗?
尝试扩展特征IOApp.WithContext
import java.util.concurrent.Executors
import cats.effect._
import cats.syntax.all._
import scala.concurrent.ExecutionContext
object Main extends IOApp.WithContext {
implicit val ec = ExecutionContext.global
// implicit val ec = ExecutionContext.fromExecutor(Executors.newFixedThreadPool(10))
override protected def executionContextResource: Resource[SyncIO, ExecutionContext] =
Resource.liftF(SyncIO(ec))
def run(args: List[String]): IO[ExitCode] = {
implicitly[Timer[IO]]
implicitly[ContextShift[IO]]
implicitly[ExecutionContext]
...
}
}