Stream joins
join combines multiple streams.
Fair merge
Stream::merge alternates elements from two sources:
#![allow(unused)] fn main() { use id_effect::Stream; let merged = Stream::from_iterable([1, 2]).merge(Stream::from_iterable([10, 20])); // [1, 10, 2, 20] }
Combine latest
combine_latest keeps the latest value from each side and emits whenever either updates (after both have emitted at least once):
#![allow(unused)] fn main() { use id_effect::{Stream, combine_latest}; let pairs = combine_latest( Stream::from_iterable([1, 2]), Stream::from_iterable(['a', 'b']), ); // [(2, 'a'), (2, 'b')] }
Keyed join
keyed_join performs an inner join on the latest value per key:
#![allow(unused)] fn main() { use id_effect::{Stream, keyed_join}; let joined = keyed_join( Stream::from_iterable([("user", 1), ("other", 2)]), Stream::from_iterable([("user", 'x')]), ); // [("user", 1, 'x')] }