It's a bit more difficult if you need something that doesn't spawn (and thus becomes executor agnostic). I had a bit fun with that and came up with this.
I wrote a crate to solve exactly this problem (well, the more generalised pub/sub form of it). Something like this should do what you want:
use flo_stream::*;
let mut publisher = Publisher::new(1);
let output_stream1 = publisher.subscribe();
let output_stream2 = publisher.subscribe();
let when_done = publisher.send_all(input_stream);
// ...
when_done.await;
Flowbetween uses streams everywhere for sending events around and general communication between components, so I had a particular need for a straightforward API for doing this kind of thing.