Treatment trigger



⇥ stream: Stream<i32>


↦ end: Block<void>
↦ first: Block<i32>
↦ last: Block<i32>
↦ start: Block<void>

Trigger on i32 stream start and end.

Emit start when a first value is send through the stream. Emit end when stream is finally over.

Emit first with the first value coming in the stream. Emit last with the last value coming in the stream.

ℹ️ start and first are always emitted together. If the stream only contains one element, first and last both contains it. If the stream never transmit any data before being ended, only end is emitted.

graph LR
     B["🟥 … 🟨 🟨 🟨 🟨 🟨 🟨 … 🟩"] -->|stream| T
     T -->|start| S["〈🟦〉"]
     T -->|first| F["〈🟩〉"]
     T -->|last| L["〈🟥〉"]
     T -->|end| E["〈🟦〉"]

     style B fill:#ffff,stroke:#ffff
     style S fill:#ffff,stroke:#ffff
     style F fill:#ffff,stroke:#ffff
     style L fill:#ffff,stroke:#ffff
     style E fill:#ffff,stroke:#ffff