2014-10-12 2 views
0

В пакете iter есть метод итерации std::iter::iterate, но я не могу найти пример того, как его использовать в любом месте. В идеале я хотел бы видеть, как вернуть результат станд :: ИТЭР :: итерацию в качестве итератора, например, этот метод в рубине, который возвращает целые числа:Как использовать метод std :: iter :: iterate Rust's

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

ответ

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

Спасибо! Проблема в том, что я хочу вернуть итератор, и я не уверен, что такое подпись типа. –

+0

@JamieMcCrindle см. Мое редактирование. – Levans

+0

Awesome. Благодаря! –

Смежные вопросы