InvariantOps
Provides syntax for streams that are invariant in
F and O.class AnyVal
trait Matchable
class Any
Value members
Methods
Lifts this stream to the specified effect type.
- Example
- {{{
scala> import cats.effect.IO
scala> Stream(1, 2, 3).covary[IO]
res0: Stream[IO,Int] = Stream(..)
}}}
Synchronously sends values through
p.If
p fails, then resulting stream will fail. If p halts the evaluation will halt too.Note that observe will only output full chunks of
by
in resulting stream.
O that are known to be successfully processedby
p. So if p terminates/fails in the middle of chunk processing, the chunk will not be availablein resulting stream.
Note that if your pipe can be represented by an
O => F[Unit], evalTap will provide much greater performance.- Example
- {{{
scala> import cats.effect.{ContextShift, IO}
scala> implicit val cs: ContextShift[IO] = IO.contextShift(scala.concurrent.ExecutionContext.Implicits.global)
scala> Stream(1, 2, 3).covary[IO] .observe(.showLinesStdOut).map( + 1).compile.toVector.unsafeRunSync()
res0: Vector[Int] = Vector(2, 3, 4)
}}}
def observeEither[L, R](left: (F, L) => Unit, right: (F, R) => Unit)(F: Concurrent[F], ev: O <:< Either[L, R]): Stream[F, Either[L, R]]
Observes this stream of
observes left values and another that observes right values.
Either[L, R] values with two pipes, one thatobserves left values and another that observes right values.
If either of
If either
left or right fails, then resulting stream will fail.If either
halts the evaluation will halt too.