scala - Fs2 Stream.Compiler 未找到(找不到隐含值 Compiler[[x]F[x],G])

标签 scala fs2

我正在尝试编译流,但不知何故Compiler不在范围内,需要什么上下文绑定(bind)才能将其纳入范围?

import cats.Monad

def compilingStream[F[_]: Monad]: F[List[Int]] = {
  val stream: fs2.Stream[F, Int] = fs2.Stream.emit(1).covary[F]
  stream.head.compile.toList
}


error: could not find implicit value for parameter compiler: fs2.Stream.Compiler[[x]F[x],G]
         stream.head.compile.toList
                     ^

最佳答案

FS2 Stream#compile现在需要 Sync[F] (见 this):

  import cats.effect.Sync

  def compilingStream[F[_]: Sync]: F[List[Int]] = {
    val stream: fs2.Stream[F, Int] = fs2.Stream.emit(1).covary[F]
    stream.head.compile.toList
  }

这是由库维护者传达的:

fs2 Stream#compile now requires a Sync[F]. Even on completely pure streams. Because of resource management. Sad. Panda.

Daniel Spiewak

关于scala - Fs2 Stream.Compiler 未找到(找不到隐含值 Compiler[[x]F[x],G]),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56329032/

相关文章:

scala - 使用 Play2 scala 的 Heroku 内存泄漏

scala - 函数与函数指针

scala - 为 Delta Data 更新 Spark Dataframe 的窗口函数 row_number 列

scala - Akka-Scala-Camel-TCP 套接字中的多条消息发送到死信

scala - 将 fs2 流输出拆分为两个文件

scala - cats/fs2 相当于 ScheduledExecutorService.scheduleWithFixedDelay 是什么

scala - 如何使用 fs2-kafka 从 embedded-kafka 读取数据

scala - 如何将 scala fs2 流转换为字符串?

scala - => 和 () => 在 Scala 中意味着什么

scala - FS2:是否可以优雅地完成队列?