如何无限期地读取Rust Tokio任务中的无限通道?
我假设如何无限期地读取Rust Tokio任务中的无限通道?,rust,channel,rust-tokio,Rust,Channel,Rust Tokio,我假设.for_each()会起作用,但它只从频道返回第一个(未来)项目,如果频道为空,则返回。在任务中无限期地读取频道的方式是什么?因为在非东京/未来的环境中,each()可以做什么 let tx_origs_reader = rx_chan.for_each(move |tx_orig| { //save receiver side tx to db let mut tx_origs_once = tx_origs_inner.borrow_mut(); tx_ori
.for_each()
会起作用,但它只从频道返回第一个(未来)项目,如果频道为空,则返回。在任务中无限期地读取频道的方式是什么?因为在非东京/未来的环境中,each()可以做什么
let tx_origs_reader = rx_chan.for_each(move |tx_orig| {
//save receiver side tx to db
let mut tx_origs_once = tx_origs_inner.borrow_mut();
tx_origs_once.push(tx_orig.clone());
Ok(())
});
handle.spawn(tx_origs_reader.then(|err| {
println!("This returns after first item without an error {:?}", err);
Ok(())
}));
每种处理方法的
都是最好的方法,应该有效-而且有效!在Gitter的tokio rs人员的帮助下(谢谢!)用简单的测试代码调试了tx端的问题
在我看来,Rust是如此先进,以至于它实际上知道在这种情况下放弃任务:基于此的日志输出让我困惑,实际上我认为问题出在rx端,尽管一直以来都是tx端的问题。欢迎使用堆栈溢出!如果你能提供一个合理的答案,你的问题将更有可能在合理的时间内得到回答。现在,您要求每个潜在的回答者从头开始构建一个完整的程序,猜测您显示的每个变量的类型。