【发布时间】:2016-06-13 21:22:44
【问题描述】:
pub fn collect_prime_factors(number: i32) -> Vec<i32> {
let mut prime_factors = Vec::new();
for i in 2..number {
if number % i == 0 {
collect_prime_factors(number / 2);
prime_factors.push(i);
prime_factors
}
}
}
错误:
lib.rs:14:9: 14:22 error: mismatched types:
expected `()`,
found `collections::vec::Vec<i32>`
(expected (),
found struct `collections::vec::Vec`) [E0308]
lib.rs:14 prime_factors
我不明白这里的问题。我将 Vec<i32> 声明为返回类型。为什么期待那些空括号?
为什么只有在循环中使用它时这不起作用?当我删除循环并且只有return prime_factors; 一切正常。
【问题讨论】:
-
打电话给
collect_prime_factors(number/2)是为了什么?它计算一个新向量并将其丢弃。 -
语义错误我只是在 rust 告诉我这些新问题后才意识到这一点。请忽略
标签: generics vector return rust