iter包有一个迭代方法std::iter::iterate,但我找不到如何在任何地方使用它的例子。理想情况下,我想看看如何将std :: iter :: iterate的结果作为迭代器返回,例如,ruby中的这个方法返回整数:
def whole_numbers()
iterate(0) do |current|
current + 1
end
end
答案 0 :(得分:2)
iterate(..)
返回迭代器本身,然后你可以直接使用它,就像那样:
let mut it = std::iter::iterate(0u, |x| x+1);
for i in it {
println!("{}", i);
}
如果你需要传递这个迭代器,你只需要模仿iterate()
的返回类型,即:
pub fn iterate<'a, T: Clone>(seed: T, f: |T|: 'a -> T) -> Iterate<'a, T>
例如:
use std::iter::{Iterate, iterate};
pub fn create_counter() -> Iterate<'static, uint> {
return iterate(0u, |x| x+1);
}