注意:这个问题自 Rust 1.0 以来已过时。
Iterator
trait 现在有一个关联的类型,而Item
不是类型参数,并且为 .Iterator
添加了一个全面的实现Box<Iterator>
。
我想定义一个返回迭代器的特征方法。我想避免指定实际的返回类型是什么,所以在我们取消装箱的抽象返回类型之前,我使用的是 trait 对象。这意味着方法返回Box<Iterator<A>>
。但我不确定如何使用盒装特征对象。我无法遍历类型的对象Box<Iterator<A>>
:
fn main() {
let xs = vec![0u, 1, 2, 3];
let boxed_iter = box xs.iter() as Box<Iterator<&uint>>;
for x in boxed_iter {}
}
这与"for" loop expression does not implement the "Iterator" trait
.
所以我的问题是:我如何迭代Box<Iterator<A>>
. 或者,更一般地说,我如何使用盒装特征对象?