
for await 和缓冲流的斗争for await迭代异步流时可能遇到的问题,特别是与流中定义的其他原语的交互问题。作者通过一个简单的示例展示了这个问题,并提出了一种可能的解决方案。文章指出,在使用异步编程时,管理并发控制流非常重要,而这个问题展示了异步编程中的一个微妙且令人惊讶的错误。作者还提出了对现有的异步原语进行改进的建议,以提供更可靠的异步编程体验。async fn batch_job(db: &Database) {
let work = run_query(db, FIND_WORK_QUERY).await;
let work_queries = stream::iter(work)
.map(|item| run_query(db, work_query(item)))
.buffered(5);
for await result in work_queries {
upload_result(result).await;
}
}
for await and the battle of buffered streams : https://tmandry.gitlab.io/blog/posts/for-await-buffered-streams/原文作者:Rust语言中文社区;如有侵权,请联系管理员删除。