Rust新手求助:如何无需硬编码用tokio::try_join!处理JoinHandle与向量元素
解决Rust动态异步任务批量等待的问题
你现在用tokio::try_join!硬编码evaluate_handles的每个元素确实不够灵活。要实现动态处理任意数量的任务,你可以用futures crate里的try_join_all函数——它和try_join!行为完全一致(只要有一个任务失败就立即返回错误),同时支持传入动态数量的Future。
具体实现代码
use futures::future::try_join_all; // 将单个fetch_handle和evaluate_handles合并成一个迭代器 let all_tasks = std::iter::once(fetch_handle).chain(evaluate_handles); // 并行等待所有任务完成,逻辑和try_join!完全对齐 let _ = try_join_all(all_tasks).await;
补充说明
- 若项目还未引入
futures依赖,需在Cargo.toml中添加:futures = "0.3" - 如果你不需要“一失败就终止”的逻辑,而是想等待所有任务完成(无论成功或失败),可以改用
tokio::join_all,它会返回所有任务的Result集合。
内容的提问来源于stack exchange,提问作者Mike Altonji
相关产品推荐
相关产品推荐

