Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么可以';当给定序列的显式类型时,t trust推断sum的结果_Rust - Fatal编程技术网

为什么可以';当给定序列的显式类型时,t trust推断sum的结果

为什么可以';当给定序列的显式类型时,t trust推断sum的结果,rust,Rust,以下代码无法推断s的类型 fn main() { let l: Vec<u32> = vec![]; let s = l.iter().sum(); println!("{:?}", s); } fn main(){ 设l:Vec=Vec![]; 设s=l.iter().sum(); println!(“{:?}”,s); } 这是由锈迹斑斑的东西引起的 //将每个线程的中间结果收集到新的Vec中 让mut intermediate_sums=vec![]

以下代码无法推断s的类型

fn main() {
    let l: Vec<u32> = vec![];
    let s = l.iter().sum();
    println!("{:?}", s);
}
fn main(){
设l:Vec=Vec![];
设s=l.iter().sum();
println!(“{:?}”,s);
}
这是由锈迹斑斑的东西引起的

//将每个线程的中间结果收集到新的Vec中
让mut intermediate_sums=vec![];
儿童中的儿童{
//收集每个子线程的返回值
让中间_sum=child.join().unwrap();
中间求和。推送(中间求和);
}
//将所有中间和合并为一个最终和。
//
//我们使用“turbofish”::为sum()提供类型提示。
//
//TODO:试着不吃鱼,而是直接吃
//指定中间_和的类型
设final_result=intermediate_sums.iter().sum::();
这似乎意味着这应该是可能的。还是我误解了这个建议

注意:我看到一些相关的票证,例如,在这种情况下,序列没有给出类型

这似乎意味着这应该是可能的。还是我误解了这个建议

我认为这是一种误解

// TODO: try without the turbofish, by instead explicitly
// specifying the type of intermediate_sums
let final_result = intermediate_sums.iter().sum::<u32>();
在这方面,您的主要功能可以写成:

fn main() {
    let l: Vec<u32> = vec![];
    let s: u32 = l.iter().sum();
    println!("{:?}", s);
}
fn main(){
设l:Vec=Vec![];
设s:u32=l.iter().sum();
println!(“{:?}”,s);
}

这是与您链接的问题相同的问题。该问题中也给出了序列的类型(它是
范围
)。我向Rust by Example团队确认这是一个打字错误。这不是写着“指定中间和的类型”,即要求和的数组,而不是求和结果吗?OP已经这么做了嗯,我不确定。即使中间_和为
Vec
,编译器仍然无法推断类型,并给出建议“考虑给出
最终_结果
a类型”
let final_result: u32 = intermediate_sums.iter().sum();
fn main() {
    let l: Vec<u32> = vec![];
    let s: u32 = l.iter().sum();
    println!("{:?}", s);
}