如何无限期地读取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端的问题。

欢迎使用堆栈溢出!如果你能提供一个合理的答案,你的问题将更有可能在合理的时间内得到回答。现在,您要求每个潜在的回答者从头开始构建一个完整的程序,猜测您显示的每个变量的类型。