gpt4 book ai didi

rust - 为什么这是错误的 "unable to infer enough type information about ` _`"

转载 作者:行者123 更新时间:2023-11-29 08:03:13 27 4
gpt4 key购买 nike

我有一些 Rust 中的简单代码:

 let d = [2, 3, 4, 6, 8];
for x in d.iter()
.take(5)
.product() {
println!("{} is the product !", x)
}

但是当我运行此代码时出现错误:

src/functional.rs:63:9: 67:14 error: unable to infer enough type information about `_`; type annotations or generic parameter binding required [E0282]
src/functional.rs:63 for x in d.iter()
src/functional.rs:64 .take(5)
src/functional.rs:65 .product() {
src/functional.rs:66 println!("{} is the product !", x)
src/functional.rs:67 }
src/functional.rs:63:9: 67:14 help: run `rustc --explain E0282` to see a detailed explanation
error: aborting due to previous error
Could not compile `gettingrusty`.

有人可以帮助我了解我做错了什么吗?

最佳答案

product 方法(自 Rust 1.5 起不稳定)从迭代器生成单个值;它不会产生另一个迭代器。因此,在 for 中使用它没有意义。循环。

但是,即使使用下面的代码,我们仍然会得到同样的错误:

#![feature(iter_arith)]

fn main() {
let d = [2, 3, 4, 6, 8];
let v = d.iter().take(5).product();
println!("{}", v);
}

错误来自编译器无法确定 product 的结果类型.我不确定为什么;它可能是编译器中的错误,或者可能只是模棱两可的情况。在数组中的一个文字上添加类型后缀(例如将 2 更改为 2i32 )并不能解决此问题,并指定 d 的类型(例如 [i32; 5] )也无济于事。这意味着我们需要告诉编译器我们希望从 product 获得什么类型.

let v: i32 = d.iter().take(5).product();
// or
let v = d.iter().take(5).product::<i32>();

关于rust - 为什么这是错误的 "unable to infer enough type information about ` _`",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34735316/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com