| Crates.io | fluxion-ordered-merge |
| lib.rs | fluxion-ordered-merge |
| version | 0.8.0 |
| created_at | 2025-11-16 07:59:31.764106+00 |
| updated_at | 2026-01-13 17:45:09.11595+00 |
| description | Generic ordered stream merging utilities for async Rust |
| homepage | |
| repository | https://github.com/umbgtt10/fluxion |
| max_upload_size | |
| id | 1935318 |
| size | 55,672 |
Part of Fluxion - A reactive stream processing library for Rust
Generic ordered stream merging utilities for async Rust.
This crate provides low-level utilities for merging async streams with temporal ordering guarantees. It works with any stream type implementing the Timestamped trait and serves as a building block for higher-level operators like merge_with in fluxion-stream.
Timestamped typeThis crate is primarily used as a building block for higher-level merge operators. Most users should use the merge_with operator from fluxion-stream instead.
use fluxion_ordered_merge::ordered_merge;
use fluxion_test_utils::Sequenced;
use fluxion_core::Timestamped;
use futures::StreamExt;
#[tokio::main]
async fn main() {
// Create timestamped streams
let stream1 = futures::stream::iter(vec![
Sequenced::with_timestamp(1, 1),
Sequenced::with_timestamp(3, 3),
]);
let stream2 = futures::stream::iter(vec![
Sequenced::with_timestamp(2, 2),
Sequenced::with_timestamp(4, 4),
]);
// Merge with ordering guarantees
let merged = ordered_merge(vec![stream1, stream2]);
// Items emitted in sequence order: 1, 2, 3, 4
let items: Vec<_> = merged.collect().await;
}
The ordered merge algorithm:
This ensures temporal ordering even when upstream streams emit at different rates or out of sequence.
Apache-2.0