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 UnboundedSender
s 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