rust - 为什么我在使用 futures::ok 时会收到错误“无法推断类型”?
问题描述
我知道有,join_all
但它不能推断类型:
extern crate futures; // 0.1.25
use futures::future::ok as fut_ok;
fn main() {
let tasks = vec![fut_ok(1), fut_ok(2), fut_ok(3)];
println!("{:?}", futures::future::join_all(tasks).wait().unwrap());
}
我收到了这个错误:
let tasks = vec![fut_ok(1), fut_ok(2), fut_ok(3)];
----- ^^^^^^ cannot infer type for `E`
|
consider giving `tasks` a type
解决方案
问题是理论上任何未来都可能返回错误。因此,FutureResult
类型(从 中返回fut_ok
)是具有两个类型参数的泛型:T
成功类型E
和错误类型。
如果这是真实代码而不是玩具示例,您将拥有一些错误处理代码,允许编译器推断 type E
。在这种情况下,您需要指定它,但由于您不使用它,您可以使用空类型()
。因此,以下任何一项都应该起作用:
let tasks: Vec<FutureResult<_, ()>> = vec![fut_ok(1), fut_ok(2), fut_ok(3)];
或者
let tasks = vec![fut_ok::<_, ()>(1), fut_ok(2), fut_ok(3)];
请注意,第一个是编译器在说:“考虑给出tasks
一个类型”时的意思。
推荐阅读
- database - Robot Framework: Connect to PostgreSQL Database via SSH Tunnel
- php - 尝试访问laravel控制器中对象中的数组时无法访问字符串类型的偏移量
- reactjs - react 无法调用和识别带有 axios 的组件并显示空白屏幕
- python-3.x - 检索 Facebook 潜在客户数据
- linux - 在 Linux 上安装 sqlite shell
- wordpress - 如何在 Wordpress 中创建带有一个变量的简单文本?
- python - keras LSTM 是否应该在没有 input_shape 参数的情况下工作?
- react-native - TypeError:无法读取未定义的属性(读取“获取”)[react-native-ssl-pinning]
- youtube-api - 存在于“totalResults”中的搜索结果未显示在“items”或“resultsPerPage”中
- powershell - MS PowerShell 或 Graph API 折叠 Chr(32) (TEXT) 和 Cut's off html email (HTML)