东京参加锈病的多个任务

时间:2020-08-26 02:34:19

标签: rust rust-tokio tokio

在我看来,

更有可能是语法问题,而不是其他问题。 想象一下,存储在长度由运行时确定的“ vec”中的某些期货,您应该同时加入这些期货,该怎么办?

显然,以tokio :: join文档中的示例为例,手动指定vec的每个长度,例如1、2、3,...,并应处理适当的情况。

extern crate tokio;

let v = Vec::new();
 v.push(future_1);
 ...
 // directly or indirectly you push many futures to the vector
 ...
 v.push(future_N);
// to join these futures concurrently one possible way is 
if v.len() == 0 {}
 if v.len() == 1 { join!(v.pop()); }
if v.len() == 2 { join!(v.pop(), v.pop() ); }
...

我还注意到tokio :: join!当我使用类似

的语法时,将列表作为文档中的参数
tokio::join!(v);

或类似的

tokio::join![ v ] /  tokio::join![ v[..] ] / tokio::join![ v[..][..] ]

那是行不通的

这里出现的问题是,是否有任何途径可以更有效地加入这些期货,还是我应该错过文件所说的东西?

1 个答案:

答案 0 :(得分:1)

您可以使用futures::future::join_all将您的期货集合“合并”到一个期货中,当所有子期货都解决时,期货就解决。