我有一个这样的 struct :
#[derive(Clone)]
struct Foo {
... // other state
receiver: tokio::sync::watch::Receiver<T>,
}
但我意识到,为了应用程序的目的,我实际上需要一个tokio::sync::broadcast
通道,它本身只实现Sender
一半中的Clone
,而不是Receiver
.所以我不能简单地替换接收器,因为Clone
不能推导出来.也许手动Clone
实现是答案,但我不确定它会是什么样子.我想它需要一个发信人的账号和一个打到sender.subscriber()
的电话.不确定这是不是正确的方法.
如果频道类型更改为广播,我如何才能拥有一个类型Foo
,我可以将句柄克隆到每个类型都能够等待接收新消息的位置?