【问题标题】:How do I use Rust's std::iter::iterate method如何使用 Rust 的 std::iter::iterate 方法
【发布时间】:2014-12-07 07:31:28
【问题描述】:

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

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

【问题讨论】:

    标签: rust


    【解决方案1】:

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

    【讨论】:

    • 谢谢!我遇到的问题是我想返回迭代器,但我不确定类型签名应该是什么。
    猜你喜欢
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-18
    • 2019-11-25
    相关资源
    最近更新 更多