Object/Class

fs2

Stream

Related Docs: class Stream | package fs2

Permalink

object Stream extends StreamLowPriority

Source
Stream.scala
Linear Supertypes
StreamLowPriority, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Stream
  2. StreamLowPriority
  3. AnyRef
  4. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Type Members

  1. final class IdOps[O] extends AnyVal

    Permalink

    Provides syntax for pure pipes based on cats.Id.

  2. final class InvariantOps[F[_], O] extends AnyVal

    Permalink

    Provides syntax for streams that are invariant in F and O.

  3. final class PartiallyAppliedFromEither[F[_]] extends AnyRef

    Permalink
  4. implicit final class PipeOps[F[_], I, O] extends AnyVal

    Permalink

    Provides operations on effectful pipes for syntactic convenience.

  5. final class PureOps[O] extends AnyVal

    Permalink

    Provides syntax for pure pipes.

  6. implicit final class PurePipe2Ops[I, I2, O] extends AnyVal

    Permalink

    Provides operations on pure pipes for syntactic convenience.

  7. implicit final class PurePipeOps[I, O] extends AnyVal

    Permalink

    Provides operations on pure pipes for syntactic convenience.

  8. final class StepLeg[F[_], O] extends AnyRef

    Permalink

    When merging multiple streams, this represents step of one leg.

    When merging multiple streams, this represents step of one leg.

    It is common to uncons, however unlike uncons, it keeps track of stream scope independently of the main scope of the stream.

    This assures, that after each next stepLeg each Stream leg keeps its scope when interpreting.

    Usual scenarios is to first invoke stream.pull.stepLeg and then consume whatever is available in leg.head. If the next step is required leg.stepLeg will yield next Leg.

    Once the stream will stop to be interleaved (merged), then stream allows to return to normal stream invocation.

  9. final class ToEffect[F[_], O] extends AnyVal

    Permalink

    Projection of a Stream providing various ways to compile a Stream[F,O] to an F[...].

  10. final class ToPull[F[_], O] extends AnyVal

    Permalink

    Projection of a Stream providing various ways to get a Pull from the Stream.

Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. implicit def IdOps[O](s: Stream[Id, O]): IdOps[O]

    Permalink

    Provides syntax for pure pipes based on cats.Id.

  5. implicit def InvariantOps[F[_], O](s: Stream[F, O]): InvariantOps[F, O]

    Permalink

    Provides syntax for streams that are invariant in F and O.

  6. implicit def PureOps[O](s: Stream[Pure, O]): PureOps[O]

    Permalink

    Provides syntax for pure pipes.

  7. def apply[F[x] >: Pure[x], O](os: O*): Stream[F, O]

    Permalink

    Creates a pure stream that emits the supplied values.

    Creates a pure stream that emits the supplied values. To convert to an effectful stream, use covary.

  8. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  9. def attemptEval[F[x] >: Pure[x], O](fo: F[O]): Stream[F, Either[Throwable, O]]

    Permalink

    Creates a single element stream that gets its value by evaluating the supplied effect.

    Creates a single element stream that gets its value by evaluating the supplied effect. If the effect fails, a Left is emitted. Otherwise, a Right is emitted.

    Use eval instead if a failure while evaluating the effect should fail the stream.

    Example:
    1. scala> import cats.effect.IO
      scala> Stream.attemptEval(IO(10)).compile.toVector.unsafeRunSync
      res0: Vector[Either[Throwable,Int]] = Vector(Right(10))
      scala> Stream.attemptEval(IO(throw new RuntimeException)).compile.toVector.unsafeRunSync
      res1: Vector[Either[Throwable,Nothing]] = Vector(Left(java.lang.RuntimeException))
  10. def awakeDelay[F[x] >: Pure[x]](d: FiniteDuration)(implicit timer: Timer[F], F: Functor[F]): Stream[F, FiniteDuration]

    Permalink

    Light weight alternative to awakeEvery that sleeps for duration d before each pulled element.

  11. def awakeEvery[F[x] >: Pure[x]](d: FiniteDuration)(implicit timer: Timer[F], F: Functor[F]): Stream[F, FiniteDuration]

    Permalink

    Discrete stream that every d emits elapsed duration since the start time of stream consumption.

    Discrete stream that every d emits elapsed duration since the start time of stream consumption.

    For example: awakeEvery[IO](5 seconds) will return (approximately) 5s, 10s, 15s, and will lie dormant between emitted values.

    d

    FiniteDuration between emits of the resulting stream

  12. def bracket[F[x] >: Pure[x], R](acquire: F[R])(release: (R) ⇒ F[Unit]): Stream[F, R]

    Permalink

    Creates a stream that emits a resource allocated by an effect, ensuring the resource is eventually released regardless of how the stream is used.

    Creates a stream that emits a resource allocated by an effect, ensuring the resource is eventually released regardless of how the stream is used.

    acquire

    resource to acquire at start of stream

    release

    function which returns an effect that releases the resource A typical use case for bracket is working with files or network sockets. The resource effect opens a file and returns a reference to it. One can then flatMap on the returned Stream to access the file, e.g to read bytes and transform them in to some stream of elements (e.g., bytes, strings, lines, etc.). The release action then closes the file once the result Stream terminates, even in case of interruption or errors.

  13. def chunk[F[x] >: Pure[x], O](os: Chunk[O]): Stream[F, O]

    Permalink

    Creates a pure stream that emits the elements of the supplied chunk.

    Creates a pure stream that emits the elements of the supplied chunk.

    Example:
    1. scala> Stream.chunk(Chunk(1,2,3)).toList
      res0: List[Int] = List(1, 2, 3)
  14. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  15. def constant[F[x] >: Pure[x], O](o: O, chunkSize: Int = 256): Stream[F, O]

    Permalink

    Creates an infinite pure stream that always returns the supplied value.

    Creates an infinite pure stream that always returns the supplied value.

    Elements are emitted in finite chunks with chunkSize number of elements.

    Example:
    1. scala> Stream.constant(0).take(5).toList
      res0: List[Int] = List(0, 0, 0, 0, 0)
  16. implicit def covaryPurePipe[F[_], I, O](p: Pipe[Pure, I, O]): Pipe[F, I, O]

    Permalink

    Implicitly covaries a pipe.

  17. def duration[F[x] >: Pure[x]](implicit F: Sync[F]): Stream[F, FiniteDuration]

    Permalink

    A continuous stream of the elapsed time, computed using System.nanoTime.

    A continuous stream of the elapsed time, computed using System.nanoTime. Note that the actual granularity of these elapsed times depends on the OS, for instance the OS may only update the current time every ten milliseconds or so.

  18. def emit[F[x] >: Pure[x], O](o: O): Stream[F, O]

    Permalink

    Creates a singleton pure stream that emits the supplied value.

    Creates a singleton pure stream that emits the supplied value.

    Example:
    1. scala> Stream.emit(0).toList
      res0: List[Int] = List(0)
  19. def emits[F[x] >: Pure[x], O](os: Seq[O]): Stream[F, O]

    Permalink

    Creates a pure stream that emits the supplied values.

    Creates a pure stream that emits the supplied values.

    Example:
    1. scala> Stream.emits(List(1, 2, 3)).toList
      res0: List[Int] = List(1, 2, 3)
  20. val empty: Stream[Pure, Nothing]

    Permalink

    Empty pure stream.

  21. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  22. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  23. def eval[F[_], O](fo: F[O]): Stream[F, O]

    Permalink

    Creates a single element stream that gets its value by evaluating the supplied effect.

    Creates a single element stream that gets its value by evaluating the supplied effect. If the effect fails, the returned stream fails.

    Use attemptEval instead if a failure while evaluating the effect should be emitted as a value.

    Example:
    1. scala> import cats.effect.IO
      scala> Stream.eval(IO(10)).compile.toVector.unsafeRunSync
      res0: Vector[Int] = Vector(10)
      scala> Stream.eval(IO(throw new RuntimeException)).compile.toVector.attempt.unsafeRunSync
      res1: Either[Throwable,Vector[Nothing]] = Left(java.lang.RuntimeException)
  24. def eval_[F[_], A](fa: F[A]): Stream[F, Nothing]

    Permalink

    Creates a stream that evaluates the supplied fa for its effect, discarding the output value.

    Creates a stream that evaluates the supplied fa for its effect, discarding the output value. As a result, the returned stream emits no elements and hence has output type Nothing.

    Alias for eval(fa).drain.

    Example:
    1. scala> import cats.effect.IO
      scala> Stream.eval_(IO(println("Ran"))).compile.toVector.unsafeRunSync
      res0: Vector[Nothing] = Vector()
  25. def every[F[x] >: Pure[x]](d: FiniteDuration)(implicit timer: Timer[F]): Stream[F, Boolean]

    Permalink

    A continuous stream which is true after d, 2d, 3d... elapsed duration, and false otherwise.

    A continuous stream which is true after d, 2d, 3d... elapsed duration, and false otherwise. If you'd like a 'discrete' stream that will actually block until d has elapsed, use awakeEvery instead.

  26. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  27. def fixedDelay[F[_]](d: FiniteDuration)(implicit timer: Timer[F]): Stream[F, Unit]

    Permalink

    Light weight alternative to fixedRate that sleeps for duration d before each pulled element.

    Light weight alternative to fixedRate that sleeps for duration d before each pulled element.

    Behavior differs from fixedRate because the sleep between elements occurs after the next element is pulled whereas fixedRate accounts for the time it takes to process the emitted unit. This difference can roughly be thought of as the difference between scheduleWithFixedDelay and scheduleAtFixedRate in java.util.concurrent.Scheduler.

    Alias for sleep(d).repeat.

  28. def fixedRate[F[_]](d: FiniteDuration)(implicit timer: Timer[F]): Stream[F, Unit]

    Permalink

    Discrete stream that emits a unit every d.

    Discrete stream that emits a unit every d.

    See fixedDelay for an alternative that sleeps d between elements.

    d

    FiniteDuration between emits of the resulting stream

  29. def force[F[_], A](f: F[Stream[F, A]]): Stream[F, A]

    Permalink

    Lifts an effect that generates a stream in to a stream.

    Lifts an effect that generates a stream in to a stream. Alias for eval(f).flatMap(_).

    Example:
    1. scala> import cats.effect.IO
      scala> Stream.force(IO(Stream(1,2,3).covary[IO])).compile.toVector.unsafeRunSync
      res0: Vector[Int] = Vector(1, 2, 3)
  30. def fromEither[F[_]]: PartiallyAppliedFromEither[F]

    Permalink

    Lifts an Either[Throwable, A] to an effectful Stream.

    Lifts an Either[Throwable, A] to an effectful Stream.

    Example:
    1. scala> import cats.effect.IO, scala.util.Try
      scala> Stream.fromEither[IO](Right(42)).compile.toList.unsafeRunSync
      res0: List[Int] = List(42)
      scala> Try(Stream.fromEither[IO](Left(new RuntimeException)).compile.toList.unsafeRunSync)
      res1: Try[List[Nothing]] = Failure(java.lang.RuntimeException)
  31. def fromIterator[F[_], A](iterator: Iterator[A])(implicit F: Sync[F]): Stream[F, A]

    Permalink

    Lifts an iterator into a Stream

  32. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  33. def getScope[F[x] >: Pure[x]]: Stream[F, Scope[F]]

    Permalink

    Gets the current scope, allowing manual leasing or interruption.

    Gets the current scope, allowing manual leasing or interruption. This is a low-level method and generally should not be used by user code.

  34. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  35. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  36. def iterate[F[x] >: Pure[x], A](start: A)(f: (A) ⇒ A): Stream[F, A]

    Permalink

    An infinite Stream that repeatedly applies a given function to a start value.

    An infinite Stream that repeatedly applies a given function to a start value. start is the first value emitted, followed by f(start), then f(f(start)), and so on.

    Example:
    1. scala> Stream.iterate(0)(_ + 1).take(10).toList
      res0: List[Int] = List(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
  37. def iterateEval[F[_], A](start: A)(f: (A) ⇒ F[A]): Stream[F, A]

    Permalink

    Like iterate, but takes an effectful function for producing the next state.

    Like iterate, but takes an effectful function for producing the next state. start is the first value emitted.

    Example:
    1. scala> import cats.effect.IO
      scala> Stream.iterateEval(0)(i => IO(i + 1)).take(10).compile.toVector.unsafeRunSync
      res0: Vector[Int] = Vector(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
  38. implicit def monadErrorInstance[F[_]](implicit ev: ApplicativeError[F, Throwable]): MonadError[[β$24$]Stream[F, β$24$], Throwable]

    Permalink

    MonadError instance for Stream.

    MonadError instance for Stream.

    Example:
    1. scala> import cats.implicits._
      scala> Stream(1, -2, 3).fproduct(_.abs).toList
      res0: List[(Int, Int)] = List((1,1), (-2,2), (3,3))
  39. implicit def monadInstance[F[_]]: Monad[[β$26$]Stream[F, β$26$]]

    Permalink
    Definition Classes
    StreamLowPriority
  40. implicit def monoidInstance[F[_], O]: Monoid[Stream[F, O]]

    Permalink

    Monoid instance for Stream.

  41. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  42. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  43. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  44. def raiseError[F[x]](e: Throwable)(implicit ev: ApplicativeError[F, Throwable]): Stream[F, Nothing]

    Permalink

    Creates a stream that, when run, fails with the supplied exception.

    Creates a stream that, when run, fails with the supplied exception.

    Example:
    1. scala> import cats.effect.IO
      scala> Stream.raiseError[IO](new RuntimeException).compile.drain.attempt.unsafeRunSync
      res0: Either[Throwable,Unit] = Left(java.lang.RuntimeException)
  45. def random[F[_]](implicit F: Sync[F]): Stream[F, Int]

    Permalink

    Creates a random stream of integers using a random seed.

  46. def randomSeeded[F[x] >: Pure[x]](seed: Long): Stream[F, Int]

    Permalink

    Creates a random stream of integers using the supplied seed.

    Creates a random stream of integers using the supplied seed. Returns a pure stream, as the pseudo random number generator is deterministic based on the supplied seed.

  47. def range[F[x] >: Pure[x]](start: Int, stopExclusive: Int, by: Int = 1): Stream[F, Int]

    Permalink

    Lazily produce the range [start, stopExclusive).

    Lazily produce the range [start, stopExclusive). If you want to produce the sequence in one chunk, instead of lazily, use emits(start until stopExclusive).

    Example:
    1. scala> Stream.range(10, 20, 2).toList
      res0: List[Int] = List(10, 12, 14, 16, 18)
  48. def ranges[F[x] >: Pure[x]](start: Int, stopExclusive: Int, size: Int): Stream[F, (Int, Int)]

    Permalink

    Lazily produce a sequence of nonoverlapping ranges, where each range contains size integers, assuming the upper bound is exclusive.

    Lazily produce a sequence of nonoverlapping ranges, where each range contains size integers, assuming the upper bound is exclusive. Example: ranges(0, 1000, 10) results in the pairs (0, 10), (10, 20), (20, 30) ... (990, 1000)

    Note: The last emitted range may be truncated at stopExclusive. For instance, ranges(0,5,4) results in (0,4), (4,5).

    Example:
    1. scala> Stream.ranges(0, 20, 5).toList
      res0: List[(Int,Int)] = List((0,5), (5,10), (10,15), (15,20))
    Exceptions thrown

    IllegalArgumentException if size <= 0

  49. def repeatEval[F[_], O](fo: F[O]): Stream[F, O]

    Permalink

    Alias for eval(fo).repeat.

  50. def resource[F[_], O](r: Resource[F, O]): Stream[F, O]

    Permalink

    Converts the supplied resource in to a singleton stream.

  51. def retry[F[_], O](fo: F[O], delay: FiniteDuration, nextDelay: (FiniteDuration) ⇒ FiniteDuration, maxRetries: Int, retriable: (Throwable) ⇒ Boolean = scala.util.control.NonFatal.apply)(implicit F: Timer[F], AE: ApplicativeError[F, Throwable]): Stream[F, O]

    Permalink

    Retries fo on failure, returning a singleton stream with the result of fo as soon as it succeeds.

    Retries fo on failure, returning a singleton stream with the result of fo as soon as it succeeds.

    delay

    Duration of delay before the first retry

    nextDelay

    Applied to the previous delay to compute the next, e.g. to implement exponential backoff

    maxRetries

    Number of attempts before failing with the latest error, if fo never succeeds

    retriable

    Function to determine whether a failure is retriable or not, defaults to retry every NonFatal. A failed stream is immediately returned when a non-retriable failure is encountered

  52. def sleep[F[_]](d: FiniteDuration)(implicit timer: Timer[F]): Stream[F, Unit]

    Permalink

    A single-element Stream that waits for the duration d before emitting unit.

    A single-element Stream that waits for the duration d before emitting unit. This uses the implicit Timer to avoid blocking a thread.

  53. def sleep_[F[_]](d: FiniteDuration)(implicit timer: Timer[F]): Stream[F, Nothing]

    Permalink

    Alias for sleep(d).drain.

    Alias for sleep(d).drain. Often used in conjunction with ++ (i.e., sleep_(..) ++ s) as a more performant version of sleep(..) >> s.

  54. def suspend[F[_], O](s: ⇒ Stream[F, O]): Stream[F, O]

    Permalink

    Returns a stream that evaluates the supplied by-name each time the stream is used, allowing use of a mutable value in stream computations.

    Returns a stream that evaluates the supplied by-name each time the stream is used, allowing use of a mutable value in stream computations.

    Note: it's generally easier to reason about such computations using effectful values. That is, allocate the mutable value in an effect and then use Stream.eval(fa).flatMap { a => ??? }.

    Example:
    1. scala> Stream.suspend {
           |   val digest = java.security.MessageDigest.getInstance("SHA-256")
           |   val bytes: Stream[Pure,Byte] = ???
           |   bytes.chunks.fold(digest) { (d,c) => d.update(c.toBytes.values); d }
           | }
  55. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  56. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  57. def unfold[F[x] >: Pure[x], S, O](s: S)(f: (S) ⇒ Option[(O, S)]): Stream[F, O]

    Permalink

    Creates a stream by successively applying f until a None is returned, emitting each output O and using each output S as input to the next invocation of f.

    Creates a stream by successively applying f until a None is returned, emitting each output O and using each output S as input to the next invocation of f.

    Example:
    1. scala> Stream.unfold(0)(i => if (i < 5) Some(i -> (i+1)) else None).toList
      res0: List[Int] = List(0, 1, 2, 3, 4)
  58. def unfoldChunk[F[x] >: Pure[x], S, O](s: S)(f: (S) ⇒ Option[(Chunk[O], S)]): Stream[F, O]

    Permalink

    Like unfold but each invocation of f provides a chunk of output.

    Like unfold but each invocation of f provides a chunk of output.

    Example:
    1. scala> Stream.unfoldChunk(0)(i => if (i < 5) Some(Chunk.seq(List.fill(i)(i)) -> (i+1)) else None).toList
      res0: List[Int] = List(1, 2, 2, 3, 3, 3, 4, 4, 4, 4)
  59. def unfoldChunkEval[F[_], S, O](s: S)(f: (S) ⇒ F[Option[(Chunk[O], S)]]): Stream[F, O]

    Permalink

    Like unfoldChunk, but takes an effectful function.

  60. def unfoldEval[F[_], S, O](s: S)(f: (S) ⇒ F[Option[(O, S)]]): Stream[F, O]

    Permalink

    Like unfold, but takes an effectful function.

  61. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  62. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  63. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from StreamLowPriority

Inherited from AnyRef

Inherited from Any

Ungrouped