Struct tokio::sync::mpsc::WeakSender
source · pub struct WeakSender<T> { /* private fields */ }
Expand description
A sender that does not prevent the channel from being closed.
If all Sender
instances of a channel were dropped and only WeakSender
instances remain, the channel is closed.
In order to send messages, the WeakSender
needs to be upgraded using
WeakSender::upgrade
, which returns Option<Sender>
. It returns None
if all Sender
s have been dropped, and otherwise it returns a Sender
.
#Examples
use tokio::sync::mpsc::channel;
#[tokio::main]
async fn main() {
let (tx, _rx) = channel::<i32>(15);
let tx_weak = tx.downgrade();
// Upgrading will succeed because `tx` still exists.
assert!(tx_weak.upgrade().is_some());
// If we drop `tx`, then it will fail.
drop(tx);
assert!(tx_weak.clone().upgrade().is_none());
}