StepLeg

final class StepLeg[+F[_], +O](val head: Chunk[O], val scopeId: Token, val next: Pull[F, O, Unit])

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.

class Object
trait Matchable
class Any
StepLeg[F, O]

Value members

Concrete methods

def setHead[O2 >: O](nextHead: Chunk[O2]): StepLeg[F, O2]

Replaces head of this leg. Useful when the head was not fully consumed.

Replaces head of this leg. Useful when the head was not fully consumed.

def stepLeg: Pull[F, Nothing, Option[StepLeg[F, O]]]

Provides an uncons-like operation on this leg of the stream.

Provides an uncons-like operation on this leg of the stream.

def stream: Stream[F, O]

Converts this leg back to regular stream. Scope is updated to the scope associated with this leg. Note that when this is invoked, no more interleaving legs are allowed, and this must be very last leg remaining.

Converts this leg back to regular stream. Scope is updated to the scope associated with this leg. Note that when this is invoked, no more interleaving legs are allowed, and this must be very last leg remaining.

Note that resulting stream won't contain the head of this leg.

Concrete fields

val head: Chunk[O]