1

我有一个Stream[F,A],我需要将其转换为以下更“原始流接口”,以便被不fs2知道的代码库的一部分使用:

trait PrimitiveStreamRepr[F[_]] {
  def read:  F[Option[A]]
  def close: F[Unit]
}

我该怎么做呢?也许答案是这样的转换是不可能的,一旦你将一个 java 流接口包装成一个fs2.Stream它就可以不再“转换”回一个“java 风格”的流接口,你必须Stream一直冒泡到顶层它可以通过管道传输到一些Sinkrun

4

1 回答 1

0

从本质上讲,您所建议的是逐步通过流。

流中的步进仍然实现,如果整个 PrimitiveStreamRepr 将用 Stream 包装,您的建议将成为可能,这不太可能是您想要的。

至于与遗留代码的接口,请参阅 async._ 包以获取各种可用的队列和信号。

抱歉,我无法为您提供更多帮助,我需要您尝试解决的遗留代码中的特殊情况。

本质上 fs2._ 与遗留代码很好地集成,不管它是同步还是异步。但是,我们不会公开最终会出现在非资源安全代码中的内部功能。

于 2016-07-22T03:43:48.297 回答