pub struct WeakUnboundedSender<T> { /* private fields */ }sync only.Expand description
An unbounded sender that does not prevent the channel from being closed.
If all UnboundedSender instances of a channel were dropped and only
WeakUnboundedSender instances remain, the channel is closed.
In order to send messages, the WeakUnboundedSender needs to be upgraded using
WeakUnboundedSender::upgrade, which returns Option<UnboundedSender>. It returns None
if all UnboundedSenders have been dropped, and otherwise it returns an UnboundedSender.
§Examples
use tokio::sync::mpsc::unbounded_channel;
#[tokio::main]
async fn main() {
let (tx, _rx) = unbounded_channel::<i32>();
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> WeakUnboundedSender<T>
impl<T> WeakUnboundedSender<T>
Sourcepub fn upgrade(&self) -> Option<UnboundedSender<T>>
pub fn upgrade(&self) -> Option<UnboundedSender<T>>
Tries to convert a WeakUnboundedSender into an UnboundedSender.
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 UnboundedSender handles.
Sourcepub fn weak_count(&self) -> usize
pub fn weak_count(&self) -> usize
Returns the number of WeakUnboundedSender handles.
Trait Implementations§
Source§impl<T> Clone for WeakUnboundedSender<T>
impl<T> Clone for WeakUnboundedSender<T>
Source§impl<T> Debug for WeakUnboundedSender<T>
impl<T> Debug for WeakUnboundedSender<T>
Auto Trait Implementations§
impl<T> Freeze for WeakUnboundedSender<T>
impl<T> RefUnwindSafe for WeakUnboundedSender<T>
impl<T> Send for WeakUnboundedSender<T>where
T: Send,
impl<T> Sync for WeakUnboundedSender<T>where
T: Send,
impl<T> Unpin for WeakUnboundedSender<T>
impl<T> UnwindSafe for WeakUnboundedSender<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