我如何使用Rust的std :: iter :: iterate方法

时间:2014-10-12 17:40:01

标签: rust

iter包有一个迭代方法std::iter::iterate,但我找不到如何在任何地方使用它的例子。理想情况下,我想看看如何将std :: iter :: iterate的结果作为迭代器返回,例如,ruby中的这个方法返回整数:

def whole_numbers()
    iterate(0) do |current|
        current + 1
    end
end

1 个答案:

答案 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);
}