如何正确从函数中返回迭代器(或任何其他 trait)?
大家好!我开始学习 Rust,遇到了一个让我觉得很奇怪的问题。我试图编写一个返回迭代器的函数,但编译器总是报错。
我想做的是:我有一个数字向量,想要过滤出偶数并返回它们的迭代器。我写了这样的代码:
```rust
fn get_even_numbers(numbers: Vec) -> Iterator- {
numbers.into_iter().filter(|&x| x % 2 == 0)
}
```
但编译器报错:
```
error[E0277]: the size for values of type `(dyn Iterator
- + 'static)` cannot be known at compilation time
```
我明白 traits 不是固定大小的类型,但如何正确返回迭代器呢?我看到有些地方使用了 `Box
>`,但这看起来像是一个临时解决方案。也许有更符合习惯用法的方式?
另外,我也想知道如何处理其他 traits,比如我想返回一个 `Display` 或 `Clone`。