Treatment merge
flow/vec/byte::merge
Inputs
⇥ a:
Stream<Vec<byte>>
⇥ b:
Stream<Vec<byte>>
⇥ select:
Stream<bool>
Outputs
↦ value:
Stream<Vec<byte>>
Merge two streams of Vec<byte>
.
The two streams are merged using the select
stream:
- when
true
, vector froma
is used; - when
false
, vector fromb
is used.
ℹ️ No vector from either a
or b
are discarded, they are used when select
give turn.
⚠️ When select
ends merge terminates without treating the remaining vectors from a
and b
.
When select
give turn to a
or b
while the concerned stream is ended, the merge terminates.
Merge continues as long as select
and concerned stream does, while the other can be ended.
graph LR T("merge()") A["…[🟪 🟪 🟪][🟪 🟪]…"] -->|a| T B["…[🟨 🟨][🟨][🟨 🟨 🟨]…"] -->|b| T O["… 🟩 🟥 🟥 🟩 🟥 …"] -->|select|T T -->|value| V["…[🟪 🟪 🟪][🟨 🟨][🟨][🟪 🟪][🟨 🟨 🟨]…"] style V fill:#ffff,stroke:#ffff style O fill:#ffff,stroke:#ffff style A fill:#ffff,stroke:#ffff style B fill:#ffff,stroke:#ffff