如何编写一个接受迭代器的 Rust 函数
大家好!我是 Rust 新手,想写一个能处理来自不同来源的数字序列的函数:来自向量、范围、文件等。在其他语言中,我只需传递数组或列表,但在 Rust 中,据我所知,通常使用迭代器。
问题在于我不知道如何正确声明参数类型。我尝试过写类似这样的代码:
```rust
fn sum_squares(items: Iterator- ) -> i32 {
items.map(|x| x * x).sum()
}
fn main() {
let vec = vec![1, 2, 3, 4, 5];
println!("{}", sum_squares(vec.iter()));
}
```
但编译器报错:"error[E0277]: the size for values of type `dyn Iterator
- ` cannot be known at compilation time"。我明白这与 trait 和栈上的大小有关,但不知道如何修复。
我需要函数能处理不同类型的迭代器:`std::vec::IntoIter`、`std::ops::Range`、`std::iter::Map` 等。如何正确指定参数类型?