gpt4 book ai didi

rust - 匹配元组作为映射的输入

转载 作者:行者123 更新时间:2023-11-29 07:49:29 24 4
gpt4 key购买 nike

尝试模式匹配映射中的元组:

fn main() {
let z = vec![(1, 2), (3, 4)];
let sums = z.iter().map(|(a, b)| a + b);
println!("{:?}", sums);
}

产生错误

error[E0308]: mismatched types
--> src/main.rs:3:30
|
3 | let sums = z.iter().map(|(a, b)| a + b);
| ^^^^^^ expected reference, found tuple
|
= note: expected type `&({integer}, {integer})`
found type `(_, _)`

可以以某种不同的形式使用此语法,或者我必须这样写:

fn main() {
let z = vec![(1, 2), (3, 4)];
let sums = z.iter()
.map(|pair| {
let (a, b) = *pair;
a + b
})
.collect::<Vec<_>>();
println!("{:?}", sums);
}

最佳答案

关键在错误信息中:

  |
3 | let sums = z.iter().map(|(a, b)| a + b);
| ^^^^^^ expected reference, found tuple
|

它告诉你 map 通过引用接受它的参数,因此你需要在模式中引用:

fn main() {
let z = vec![(1, 2), (3, 4)];
let sums = z.iter().map(|&(a, b)| a + b);
// ^
println!("{:?}", sums);
}

就是这样。

关于rust - 匹配元组作为映射的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40277917/

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