gpt4 book ai didi

for-loop - Rust 错误预期类型 `()` 找到类型 `(i32, i32)`

转载 作者:行者123 更新时间:2023-12-03 11:26:24 25 4
gpt4 key购买 nike

Rust 的新手,决定使用 Advent of Code 2020 Day 1 Puzzle 复习一下.我正在使用以下功能:

fn find_numbers_2020(v: Vec<i32>) -> (i32,i32) {
let mut n1: i32 = 0;
let mut n2: i32 = 0;
let mut cnt = 0;
let size = v.len();
for v_i in v {
n1 = v_i;
cnt = cnt+1;
for i in cnt..size {
if (n1 + *v.get(i).unwrap()) == 2020 {
n2 = *v.get(i).unwrap();
(n1, n2) //Issue is here
}
}
}
(n1, n2)
}

但是我得到了错误"32 (n1, n2)

     ^^^^^^^^ expected (), found tuple.

它是从 main 中调用的,如下所示

fn main() {
let filename = String::from("./input.txt");
let v = parse_file(filename); //This works fine
for v_i in v {
println!("{}", v_i);
}
let result = find_numbers_2020(v);
let (n1, n2) = result;
println!("{} + {} = {}", n1, n2, n1+n2);
println!("{} * {} = {}", n1, n2, n1*n2);
}

我还应该提到 vVec<i32> .很抱歉这个初学者的问题,但 Rust 可能有点令人困惑,我无法通过谷歌搜索找到任何答案。

最佳答案

仅当返回值是函数 block 中的最后一个表达式时,您才可以省略return关键字,否则您需要显式使用return。将 return 添加到您的示例可以修复该特定错误,但会出现一堆新错误。这就是我编写函数的方式:

fn find_numbers_2020(v: Vec<i32>) -> (i32, i32) {
for (skip, &n1) in v.iter().enumerate() {
for &n2 in v.iter().skip(skip) {
if n1 + n2 == 2020 {
return (n1, n2);
}
}
}

panic!("no pair of numbers in vec sum to 2020");
}

关于for-loop - Rust 错误预期类型 `()` 找到类型 `(i32, i32)`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65782077/

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