pub struct WeakSender<T> { /* private fields */ }sync only.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 Senders have been dropped, and otherwise it returns a Sender.
§Examples
use tokio::sync::broadcast::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());
}Implementations§
Source§impl<T> WeakSender<T>
impl<T> WeakSender<T>
Sourcepub fn upgrade(&self) -> Option<Sender<T>>
pub fn upgrade(&self) -> Option<Sender<T>>
Tries to convert a WeakSender into a Sender.
This will return Some if there are other Sender instances alive and
the channel wasn’t previously dropped, otherwise None is returned.
Sourcepub fn strong_count(&self) -> usize
pub fn strong_count(&self) -> usize
Returns the number of Sender handles.
Sourcepub fn weak_count(&self) -> usize
pub fn weak_count(&self) -> usize
Returns the number of WeakSender handles.
Trait Implementations§
Source§impl<T> Clone for WeakSender<T>
impl<T> Clone for WeakSender<T>
Source§fn clone(&self) -> WeakSender<T>
fn clone(&self) -> WeakSender<T>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<T> Debug for WeakSender<T>
impl<T> Debug for WeakSender<T>
Auto Trait Implementations§
impl<T> Freeze for WeakSender<T>
impl<T> !RefUnwindSafe for WeakSender<T>
impl<T> Send for WeakSender<T>where
T: Send,
impl<T> Sync for WeakSender<T>where
T: Send,
impl<T> Unpin for WeakSender<T>
impl<T> !UnwindSafe for WeakSender<T>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 8 bytes