我认为这.for_each()
可以解决问题,但它只返回通道中的第一个(未来)项目,然后返回,如果通道是空的。.for_each()
像在非 Tokio/future 上下文中那样无限期地读取任务中的频道的方法是什么?
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(())
}));