我有一个Stream[F,A]
,我需要将其转换为以下更"原始的流式接口",以便被代码库中不支持fs2
的部分使用:
trait PrimitiveStreamRepr[F[_]] {
def read: F[Option[A]]
def close: F[Unit]
}
我该怎么做呢?也许答案是这样的转换是不可能的,一旦你把一个java流式接口包装成fs2.Stream
,它就可以再"转换"回"java风格"的流式接口,你必须把Stream
一直泡到顶层,在那里它可以被管道传输到一些Sink
和run
。
本质上,您所建议的是逐步通过流。
流中的步进仍然是实现的,如果整个PrimitiveStreamRepr都将被stream包裹,那么你的建议将是可能的,这不太可能是你想要的。
关于与遗留代码的接口,请参阅async._可用于各种队列和信号的包。
对不起,我不能帮你更多,我将需要在遗留代码中的特殊情况下,你试图解决。
从本质上讲,fs2._与遗留代码集成得很好,无论是同步还是异步。但是,我们不会公开最终会以非资源安全代码结束的内部功能。