跳到主要内容

WeakUnboundedSender

搜索

结构体 WeakUnboundedSender 

源代码
pub struct WeakUnboundedSender<T> { /* 私有字段 */ }
展开描述

不会阻止 channel 被关闭的无界 sender。

如果 channel 的所有 UnboundedSender 实例都已被 drop,仅剩下 WeakUnboundedSender 实例,则 channel 关闭。

为了发送消息,WeakUnboundedSender 需要使用 WeakUnboundedSender::upgrade 进行升级,该函数返回 Option<UnboundedSender>。如果所有 UnboundedSender 都已被 drop,则返回 None,否则返回 UnboundedSender

§示例

use tokio::sync::mpsc::unbounded_channel;

let (tx, _rx) = unbounded_channel::<i32>();
let tx_weak = tx.downgrade();

// 升级会成功,因为 `tx` 仍然存在。
assert!(tx_weak.upgrade().is_some());

// 如果 drop 掉 `tx`,则升级会失败。
drop(tx);
assert!(tx_weak.clone().upgrade().is_none());

实现§

源代码§

impl<T> WeakUnboundedSender<T>

源代码

pub fn upgrade(&self) -> Option<UnboundedSender<T>>

尝试将 WeakUnboundedSender 转换为 UnboundedSender。如果存在其他存活的 Sender 实例且 channel 之前未被 drop,则返回 Some,否则返回 None

源代码

pub fn strong_count(&self) -> usize

返回 UnboundedSender 句柄的数量。

源代码

pub fn weak_count(&self) -> usize

返回 WeakUnboundedSender 句柄的数量。

trait 实现§

源代码§

impl<T> Clone for WeakUnboundedSender<T>

源代码§

fn clone(&self) -> Self

返回值的副本。 更多信息
1.0.0 · 源代码§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. 更多信息
源代码§

impl<T> Debug for WeakUnboundedSender<T>

源代码§

fn fmt(&self, fmt: &mut Formatter<'_>) -> Result

使用给定的格式化器格式化此值。 更多信息
源代码§

impl<T> Drop for WeakUnboundedSender<T>

源代码§

fn drop(&mut self)

执行此类型的析构函数。 更多信息

自动 trait 实现§

blanket 实现§

源代码§

impl<T> Any for T
where T: 'static + ?Sized,

源代码§

fn type_id(&self) -> TypeId

Gets the TypeId of self. 更多信息
源代码§

impl<T> Borrow<T> for T
where T: ?Sized,

源代码§

fn borrow(&self) -> &T

Immutably borrows from an owned value. 更多信息
源代码§

impl<T> BorrowMut<T> for T
where T: ?Sized,

源代码§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. 更多信息
源代码§

impl<T> CloneToUninit for T
where T: Clone,

源代码§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 更多信息
源代码§

impl<T> From<T> for T

源代码§

fn from(t: T) -> T

原样返回参数。

源代码§

impl<T, U> Into<U> for T
where U: From<T>,

源代码§

fn into(self) -> U

调用 U::from(self)

也就是说,此转换是 From<T> for U 实现选择执行的操作。

源代码§

impl<T> ToOwned for T
where T: Clone,

源代码§

type Owned = T

获得所有权后的类型。
源代码§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. 更多信息
源代码§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 更多信息
源代码§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

源代码§

type Error = Infallible

转换出错时返回的类型。
源代码§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

执行转换。
源代码§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

源代码§

type Error = <U as TryFrom<T>>::Error

转换出错时返回的类型。
源代码§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

执行转换。