#channel #broadcast-channel #broadcast #oneshot #sync #send-message

oneshot-broadcast

A oneshot-broadcast channel that broadcasts a value once without cloning it

2 releases

0.0.2 Jan 22, 2024
0.0.1 Jan 21, 2024

#1581 in Asynchronous

MIT/Apache

23KB
563 lines

Crates.io Documentation

oneshot-broadcast

A oneshot-broadcast channel that broadcasts a value once without cloning the message.

Example

use oneshot_broadcast::*;

#[tokio::main]
async fn main() {
    // Create the oneshot-broadcast channel
    let (mut sender, mut receiver) = channel::<u32>();

    // Send a message through the sender
    sender.send(10);

    // We can freely clone the receiver
    let mut receiver2 = receiver.clone();

    // and receive the message asynchronously.
    assert_eq!(receiver.recv().await.unwrap(), &10);
    assert_eq!(receiver2.recv().await.unwrap(), &10);

    // Or, if we're sure that it's ready:
    assert_eq!(receiver.get().unwrap().unwrap(), &10);

    // As an extra feature, we can erase the receiver_type by
    // turning it into a listener:
    let listener /* : Listener */ = receiver.into_listener();
    assert_eq!(listener.await, Ok(()));
}

Dependencies

~85KB